我正在开发一个程序,可以读取和解析一个嵌入式硬件系统的配置文件。我正在尝试使用tkinter和python来创建一个简单的GUI来读写这个文件。我有文件IO和解析大部分工作,但我有麻烦,使所有部分与GUI集成。我想从设备上读取信息,然后用相关信息填充输入字段。我遇到的问题是我不断地犯错误
"in initUI
opnBut = Button(butFrm, text="Open", command=openCfg)
NameError: name 'openCfg' is not defined"
如果我把它放在应用程序类之外,我可以让它找到函数,但是我不知道如何引用窗口中的字段来更新它们。你知道吗
任何帮助都将不胜感激。我的代码段包含在下面。你知道吗
class Application(Frame):
def openCfg():
name = getNameFromFile()
nameEntry.insert(0, name)
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Config Reader")
self.pack(fill=BOTH, expand=True)
nameFrm = Frame(self)
nameFrm.pack(fill=X)
nameLbl = Label(nameFrm, text="Device Name",width=20)
nameLbl.pack(side=LEFT,padx=5, pady=5)
nameEntry = Entry(nameFrm)
nameEntry.pack(fill=X, padx=5, pady=5)
butFrm = Frame(self)
butFrm.pack(fill=X)
opnBut = Button(butFrm, text="Open Cfg", command=openCfg)
opnBut.pack(fill=X, padx=5,pady=5)
root = Tk()
root.geometry("600x600")
app = Application(root)
app.mainloop()
在类命名空间中定义的项被绑定到类。在这种情况下,你有几个选择。。。你知道吗
一种选择是,您可以将其设置为
staticmethod
:然后将按钮绑定为:
然而,静态方法很少是必要的。在本例中,我可能只是将
openCfg
的定义移出类,并保持其他所有内容不变:再看一眼,这可能仍然会为
nameEntry
带来一个NameError
。您可能需要一个一流的方法:当然,当您创建
nameEntry
时,您需要使它成为应用程序类的成员。你知道吗相关问题 更多 >
编程相关推荐