2016-08-04 255 views
-1

我已经搜索了几个小时,但找不到有相同问题的人。我的问题出现在代码之后。从Tkinter的Entry小部件中获取输入文本并使用它

class Interface: 
    def __init__(self, root): 
      --- Stuff Here --- 
      self.hEntry = Entry(lFrame) 
      self.hEntry.bind("<Return>", self.aMethodToGetText) 
      --- Stuff Here --- 

    def aMethodToGetText(self, event): 
      return event.widget.get() 

    def anotherMethod(self): 
      --- Stuff Here --- 
      self.hEntry.pack() 
      h = self.aMethodToGetText()?????????????????? 
      --- Stuff Here --- 

我想给我的变量^h值的方法aMethodToGetText回报。调用这样说,这将OFC给出一个错误:

类型错误:aMethodToGetText()缺少1个所需位置参数: '事件'

使用H = self.aMethodToGetText(self.hEntry),并删除插件。也不起作用。

如果您有1个条目,可以轻松解决。但我有很多Entrys,必须为我的所有Entrys制作一个通用的文本getter方法。

编辑:所以我需要一个函数为每个条目?我想在不同的条件,功能和切片中使用每个条目。这就是为什么我需要每个条目的变量。我不能将我的代码在另一个方法(self)中移动到aMethodToGetText(self,event),因为我不希望每次按下输入按钮时都要重新启动该函数。如果我在任何条目上按Enter键,我希望他们做同样的事情,将条目分配给一个变量。但是每个条目都应该分配给不同的变量。我需要比较互相的信任。

编辑2:

class Interface: 
    def __init__(self, root): 
      --- Stuff Here --- 
      self.aListForEntries = [] 
      self.hEntry = Entry(lFrame) 
      self.hEntry.bind("<Return>", self.aMethodToGetText) 
      self.aEntry = Entry(lFrame) 
      self.aEntry.bind("<Return>", self.aMethodToGetText) 
      --- Stuff Here --- 

    def aMethodToGetText(self, event): 
      entry = event.widget.get() 
      self.aListForEntries.append(entry) 

    def anotherMethod(self): 
      --- Stuff Here --- 
      self.hEntry.pack() 
      h = self.entryList[0] #IndexError: list index out of range 
      --- Check the first Entry --- 
      self.aEntry.pack() 
      a = self.entryList[1] 
      --- Check the second Entry --- 
      if h == a: 
       Do stuff 
      --- Stuff Here --- 

我得到一个错误,因为用户按下回车时,列表为空。我试图在行h = self.entryList[0]之前用脚本time.sleep(x)来解决问题,但这不起作用。我不希望程序在用户按Enter键之前运行整个anotherMethod(self)

+0

@noscreenname第一个参数'self'被暗示,因为它是一种方法 - 它需要一个参数,event。 – Delioth

+0

如果你有多个条目,那么你能否提供这种情况的例子。根据你想要为每个条目做什么,解决方案会有很大的不同。如果你在任何条目上按回车,他们是否应该做同样的事情或每件事情不同?如果不同,那么除非使用该条目或条目添加条件,否则不能具有通用功能。 –

+0

@StevenSummers所以我需要一个函数为每个条目?我想在不同的条件,功能和切片中使用每个条目。这就是为什么我需要每个条目的变量。我不能在另一个方法(self)中将我的代码移动到aMethodToGetText(self,event),因为我不希望每次按下按钮时都要重新启动该函数。 编辑:如果我按任何条目输入,我希望他们做同样的事情,将条目分配给一个变量。但是每个条目都应该分配给不同的变量。我需要比较互相的信任。 – WildRoyal

回答

-2

不知道是否会工作,但你有没有尝试与lambda?是这样的:

lambda event, h = event.widget.get(): self.aMethodToGetText(event) 
0

编辑:的例子有两个入口小部件配置标签内容是否匹配显示器。

import tkinter as tk 

class Example(object): 
    def __init__(self, master): 
     self._master = master 

     self._lbl = tk.Label(master, text = '?') 
     self._lbl.pack(side = tk.LEFT) 

     self.hEntry = tk.Entry(master) 
     self.hEntry.bind("<Return>", self.update) 
     self.hEntry.pack() 

     self.aEntry = tk.Entry(master) 
     self.aEntry.bind("<Return>", self.update) 
     self.aEntry.pack() 

    def update(self, event): 
     if self.hEntry.get() == self.aEntry.get(): 
      self._lbl.config(text = "Match") 
     else: 
      self._lbl.config(text = "No Match") 

if __name__ == '__main__': 
    root = tk.Tk() 
    app = Example(root) 
    root.mainloop() 
+0

不是我想要的。假设我有2个Entrys,我想比较用户写入的输入与if语句。我怎么做?看我的编辑2。 – WildRoyal

+0

我编辑了我的答案,这是你以后的? –

+0

我想在当时显示一个条目。我想在显示第二个条目之前检查第一个输入是否正确。我已更新我的帖子。 我的代码是300行。我不想在这里显示我的代码,对不起。 – WildRoyal

相关问题