我一直无法成功地启动单独的窗口--当然,主窗口Tk必须是.mainloop的发起者,而最初,这是GUI中唯一的窗口。在我完成了GUI,测试了它的功能,并且稍微有点为我自己骄傲之后,我变得很自信,并且决定加入一个用户登录窗口。
这个程序本身只是一个问答测试,随机在美国的50个首都城市进行测试--这是我从我的Python指南中偷来的一个的想法,然而,我是独立编写代码的,部分是作为练习,部分是为了学习--为体验而使用。但是,在试图让Toplevel窗口真正启动时遇到了困难之后,即使有了所有的资源,我也无法成功地完成它,并同时打开了的 for Tkinter!
试过wait_window..。尝试了grab_set()和focus_set() ..。再说一遍,我知道主窗口必须启动主循环。在世界里,我做错了什么?!这是我的代码完全结构化的方式吗?!结构不好?总之,这是密码..。我希望这个网站格式化代码后,合并一定数量的行,因为它是相当长的。
所有的代码,这么少的技巧..。LOL。事情也需要一些异常处理..。我知道这个。任何关于的建议、指导和/或帮助-我的代码中的任何方面-不仅是受欢迎的,而且是非常感谢的,因此,如果有什么东西超出了我似乎无法克服的双窗口困境,请随意把它放在前面的街道上!(预先多谢!)
我的密码
class MainWin(tk.Tk):
def __init__(self):
super().__init__()
self.title('Minimal Code')
class Login(tk.Toplevel):
def __init__(self, master=MainWin()):
super().__init__()
self.name = tk.StringVar()
enter code here
userlbl = tk.Label('Enter Name: ')
userent = tk.Entry(width=18, textvariable=self.name)好的,为了获得最小的代码来复制我正在处理的基本问题,请假设我已经输入了标签和条目小部件的.grid()信息.最终,我想让这个界面弹出(Toplevel)来实现--如果主窗口在后面,那没问题,只要关闭登录窗口就可以了--但我一生都无法做到这一点。
我真的不想重写整件事,但我正在考虑.要查看使用画布是否可以更容易地执行此特定操作。
发布于 2022-02-26 08:41:36
班级的顺序是排在前面的。
因此,Main失败,因为它是在被调用之前初始化的:
class Login(tk.Toplevel):
def __init__(self, master=Main(), takefocus=True):
super().__init__()我改变了顺序,这个错误就发生了。
class Main(tk.Tk):
class Login(tk.Toplevel)::
我不知道这是否使代码工作,但它消除了错误。
另外,当您使用instantiate类时,它需要括号,所以
master=Main变成了
master=Main()https://stackoverflow.com/questions/71274372
复制相似问题