PYTHON TkInter - 将条目小部件文本设置和访问为变量

时间:2012-10-06 00:47:26

标签: python tkinter

我尽可能多地阅读有关此内容的文章,但找不到任何可以帮助我的内容。在我的代码中,我创建了一个类EntryWidget,其中包含一个条目小部件,在我的主应用程序控制器中,我创建了一个名为self.entry的类EntryWidget的实例。我正在尝试编写一个方法,该方法将是一个ok按钮的命令,它主要从入口小部件中获取文本,然后对其进行操作。此代码来自主类Controller:

     def ok(self):
         self.input = self.entry.get()
         self.command = ""

错误:

     AttributeError: EntryWidget instance has no attribute 'get'

这个想法是输入文本,然后点击ok按钮调用此方法。对不起,如果以前曾经问过,但我已经阅读了其他回复,他们也没有帮助。

感谢

2 个答案:

答案 0 :(得分:2)

如果您的EntryWidget课程不是Tkinter.Entry的子类,则需要为get()课程定义EntryWidget方法。该错误表明self.entryEntryWidget个实例,但不包含get()方法。

答案 1 :(得分:0)

我自己写了一个小函数,允许用户在tkinter.Entry中输入一个值,然后函数返回用户的输入。

def getInput(title, message):
    class inputGUI(tkinter.Tk):
        def __init__(self):
            tkinter.Tk.__init__(self)
            self.title(title)
            self.l=tkinter.Label(self,text=message, width = 30, pady = 10, padx = 5).pack()
            self.e=tkinter.Entry(self, width = 30)
            self.e.pack()
            self.e.focus()
            self.gap=tkinter.Label(self,text="", width = 50, pady = 0, padx = 5).pack()
            self.b=tkinter.Button(self,text='Submit',command=self.cleanup, width = 20, pady = 10, padx = 5).pack()
            self.gap=tkinter.Label(self,text="", width = 30, pady = 0, padx = 5).pack()
        def cleanup(self):
            self.userInput=self.e.get()
            self.destroy()
    root = inputGUI()
    root.focus()
    root.wait_window(root)
    valueOut = root.userInput
    return valueOut

注意:我知道没有条目验证,但这应该很容易添加。