如何解决TypeError:“顶级”对象不可调用-有人知道为什么会发生这种情况吗?
所以在这里,我正在尝试制作一个小的python-tkinter程序,该程序会将您的应用程序密码存储在文件中。但是,当我尝试打开第二个屏幕时,出现此错误:
TypeError:“顶级”对象不可调用
代码如下:
from tkinter import *
from tkinter import messageBox
import os
def screen2():
global screen2
screen2 = Toplevel(root)
screen2.title("Main Page")
screen2.geometry("260x230")
screen2.resizable("False","False")
Label(screen2,text="hello").pack()
def check_code():
code_requestget = code_request.get()
print(code_requestget)
if code_requestget == code:
screen2()
else:
messageBox.showwarning("Error","Code is incorrect")
def mainscreen():
global root
global code
global code_request
code = "1234"
root = Tk()
root.title("Passwords")
root.geometry("260x230")
root.resizable("False","False")
code_request = StringVar()
label1 = Label(root,text="Welcome - Enter Code",width="40",height="3",background="SpringGreen3")
label1.pack()
Label(text="").pack()
enter_code = Entry(root,width="20",textvariable=code_request)
enter_code.pack()
Label(text="").pack()
continue_button = Button(root,text="Continue",width="16",command=check_code)
continue_button.pack()
root.mainloop()
mainscreen()
解决方法
与您的问题无关,但是看到您的窗口名称使我觉得您根本不想使用Toplevel。仅当您需要2个活动窗口时才需要,但是我怀疑您只想使用一个窗口来检查密码,然后将其关闭并打开第二个“主”窗口,对吗?如果是这样,则需要重新配置根窗口,而不是使用Toplevel打开新窗口。像这样:
from tkinter import *
from tkinter import messagebox
import os
def screen2():
frame1.destroy() # remove all the pw check stuff
root.title("Main Page") # rename window
Label(root,text="hello").pack()
def check_code():
code_requestget = code_request.get()
print(code_requestget)
if code_requestget == code:
screen2()
else:
messagebox.showwarning("Error","Code is incorrect")
def mainscreen():
global root,code,code_request,frame1
code = "1234"
root = Tk()
root.title("Passwords")
root.geometry("260x230")
root.resizable("False","False")
frame1 = Frame(root) # create a Frame to hold pw check components
frame1.pack()
code_request = StringVar()
label1 = Label(frame1,text="Welcome - Enter Code",width="40",height="3",background="SpringGreen3")
label1.pack()
Label(frame1,text="").pack()
enter_code = Entry(frame1,width="20",textvariable=code_request)
enter_code.pack()
Label(frame1,text="").pack()
continue_button = Button(frame1,text="Continue",width="16",command=check_code)
continue_button.pack()
root.mainloop()
mainscreen()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。