我正在开发一个GUI,我想将它链接到我的程序,但是我在get()方面遇到了很多问题。
from Tkinter import *
class ProgramGui(Tk):
gui = Tk()
gui.grid()
#Create Text
t = Label(gui,text='Enter your text : ')
t.grid(column=1,row=1,sticky='EW')
#Create an entry
e = Entry(gui)
e.grid(column=2,row=1,sticky='EW')
e.focus_set()
def valueGET():
print e.get()
#Create button
b=Button(gui, text="get", width=10, command=valueGET)
b.grid(column=3,row=1,sticky='EW')
mainloop()
如果我没有创建一个类,这个代码函数,但我想用这个gui作为我的程序,所以我需要把它放在一个类中来调用它。
我在尝试我的程序时遇到此错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Anaconda\lib\lib-tk\Tkinter.py", line 1486, in __call__
return self.func(*args)
File "C:/Users/me/Desktop/my1rstGUI.py", line 24, in valueGET
print e.get()
File "C:\Anaconda\lib\lib-tk\Tkinter.py", line 2472, in get
return self.tk.call(self._w, 'get')
TclError: invalid command name ".315386248L"
Exception in Tkinter callback
答案 0 :(得分:1)
首先,您需要将大部分代码移到类的构造函数中:
class ProgramGui(Tk):
def __init__(self):
gui = Tk()
....
其次,您需要保存对要与之交互的小部件的引用:
self.e = Entry(gui)
...
self.e.get(...)
完全与您的问题无关,gui.grid()
绝对没有任何意义。你可以删除它。