【发布时间】:2016-06-11 17:26:06
【问题描述】:
我是 python 初学者。尝试制作一个新按钮来关闭窗口。我收到错误消息:
Tkinter 回调异常 Traceback(最近一次通话最后一次):文件 "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", 第 1536 行,在 call 中 return self.func(*args) 文件“tk_cp_successful.py”,第 138 行,在 buttonPushed self.root.destroy() 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py”, 第 1859 行,在销毁中 self.tk.call('destroy', self._w) TclError: can't invoke "destroy" command: application has been destroy
class LoginPage(tk.Frame):
def __init__(self, parent, controller):
self.controller = controller
self.root = tk.Tk()
global entry_1
global entry_2
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="Welcome to VISA Login Page",fg="blue")
label.pack(pady=10,padx=10)
label_1 = Label(self, text="Username")
label_1.pack()
label_2 = Label(self, text="Password")
label_2.pack()
entry_1 = Entry(self)
entry_1.pack()
entry_2 = Entry(self, show="*")
entry_2.pack()
label_1.grid(row=0, sticky=E)
label_1.pack()
label_2.grid(row=1, sticky=E)
label_2.pack()
entry_1.grid(row=0, column=1)
entry_1.pack()
entry_2.grid(row=1, column=1)
entry_2.pack()
checkbox = Checkbutton(self, text="Keep me logged in")
checkbox.grid(columnspan=2)
checkbox.pack()
logbtn = Button(self, text="Login", command = self._login_btn_clickked)
logbtn.grid(columnspan=2)
logbtn.pack()
myButton = Button(self, text="Exit",command = self.buttonPushed)
myButton.pack()
def buttonPushed(self):
self.root.destroy()
def _login_btn_clickked(self):
#print("Clicked")
username = entry_1.get()
password = entry_2.get()
#print(username, password)
if username == "test" and password == "test":
#box.showinfo("Login info", "Welcome Tester")
button1 = ttk.Button(self, text="Please click, Welcome to login!!!",
command=lambda: self.controller.show_frame(StartPage))
button1.pack()
else:
box.showerror("Login failed", "Incorrect username")
【问题讨论】:
-
我从来没有见过这个:
logbtn.grid(columnspan=2); logbtn.pack(),也就是说,“网格化”一个小部件并在“打包”它之后立即。我不知道真正的效果是什么,但我几乎可以肯定这不是“正确”的做法。 -
感谢您的帮助。我可以在不破坏的情况下运行它。一切正常。一旦我运行 buttonPushed,它就会出错。感觉root是全局的,不能从这个类中使用--------.self.root.destroy()
标签: python python-2.7 tkinter