gpt4 book ai didi

python - Tcl 错误 : can't invoke "destroy" command: application has been destroyed

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:42 31 4
gpt4 key购买 nike

我是一名 Python 初学者。尝试制作一个新按钮来关闭窗口。我收到错误消息:

Exception in Tkinter callback Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1536, in call return self.func(*args) File "tk_cp_successful.py", line 138, in buttonPushed self.root.destroy() File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1859, in destroy self.tk.call('destroy', self._w) TclError: can't invoke "destroy" command: application has been destroyed

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")

最佳答案

你的代码有很多问题

  1. 缩进错误
  2. 混合 grid()pack()
  3. 你是import tkinter as tk还是from tkinter import *,即
    self.root = tk.Tk()(导入为 tk)或
    label_1 = Label(self, text="Username")(from tkinter import *)
  4. 程序中没有mainloop
  5. 在一个类中使用全局是没有必要的,而且风格很差

无论如何,以下修改后的代码都会运行,希望它能有所帮助。

import sys
if sys.version_info[0] < 3:
import Tkinter as tk ## Python 2.x
else:
import tkinter as tk ## Python 3.x

class LoginPage():
def __init__(self):
self.root=tk.Tk()
label = tk.Label(self.root, text="Welcome to VISA Login Page",fg="blue")
label.grid(row=0)

label_1 = tk.Label(self.root, text="Username")
label_2 = tk.Label(self.root, text="Password")
self.entry_1 = tk.Entry(self.root)
self.entry_2 = tk.Entry(self.root, show="*")
label_1.grid(row=1, sticky="e")
label_2.grid(row=2, sticky="e")
self.entry_1.grid(row=1, column=1)
self.entry_2.grid(row=2, column=1)

## doesn't do anything at this time
##checkbox = tk.Checkbutton(self.root, text="Keep me logged in")
##checkbox.grid(row=3, columnspan=2)

logbtn = tk.Button(self.root, text="Login", command = self._login_btn_clickked)
logbtn.grid(row=9, columnspan=2)
myButton = tk.Button(self.root, text="Exit",command = self.buttonPushed)
myButton.grid(row=10)

self.root.mainloop()

def buttonPushed(self):
self.root.destroy()

def _login_btn_clickked(self):
#print("Clicked")
username = self.entry_1.get()
password = self.entry_2.get()

#print(username, password)

if username == "test" and password == "test":
print "OK login"
#box.showinfo("Login info", "Welcome Tester")
#button1 = ttk.Button(self.root, text="Please click, Welcome to login!!!",
# command=lambda: self.controller.show_frame(StartPage))
#button1.pack()
else:
#box.showerror("Login failed", "Incorrect username")
print "Error"

LP=LoginPage()

关于python - Tcl 错误 : can't invoke "destroy" command: application has been destroyed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35686580/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com