Python 从Tkinter的输入中获取值

Python 从Tkinter的输入中获取值,python,tkinter,Python,Tkinter,有人问过类似的问题,但没有一个能说明我的脚本的具体构造方式: from Tkinter import * from ttk import * class Gui(Frame): def __init__(self, parent): Frame.__init__(self, parent) #Gui inherits from built in Frame Class self.parent = parent self.ini

有人问过类似的问题,但没有一个能说明我的脚本的具体构造方式:

from Tkinter import *
from ttk import *
class Gui(Frame):

    def __init__(self, parent):
        Frame.__init__(self, parent)       #Gui inherits from built in Frame Class
        self.parent = parent
        self.initUI()       

    def initUI(self):
        self.parent.title("Shoes Ware")
        self.pack(fill=BOTH, expand=1)

        run_val = Entry(self)          
        run_val["width"] = 5
        run_val.place(x=80, y=40)

        quit_B = Button(self, text="Submit", command=self.submit)   
        quit_B.place(x=130, y=170)

        def submit(self):
            value = run_val.get()
            print value
            self.quit()

def main():
    root = Tk()
    root.geometry("300x200+50+50")
    app = Gui(root)
    root.mainloop()

if __name__ == '__main__':
    main()

当我点击提交按钮时,我得到“NameError:全局名称‘run_val’未定义”。我做错了什么。现在打印报表只是为了检查我的工作。稍后,我将在程序中使用该值。

您没有在
initUI
中存储对条目小部件的引用

def initUI(self):
    # ...
    self.run_val = Entry(self)          
    self.run_val["width"] = 5
    self.run_val.place(x=80, y=40)

然后您可以毫无问题地检索
self.run_val.get()
的值。

您没有将对条目小部件的引用存储在
initUI

def initUI(self):
    # ...
    self.run_val = Entry(self)          
    self.run_val["width"] = 5
    self.run_val.place(x=80, y=40)

然后,您可以毫无问题地检索
self.run\u val.get()
的值。

我建议您在
初始化()中声明run\u val()。您可以在构造函数中执行
self.run\u val=None
,并在整个程序中使用self.run\u val而不是run\u val。这可能不是最好的做法,但我也遇到过类似的情况,这对我很有效。我建议您在
中声明run\u val init\uu()
。您可以在构造函数中执行
self.run\u val=None
,并在整个程序中使用self.run\u val,而不是run\u val。这可能不是最好的做法,但我也遇到过类似的情况,这对我很有效。