首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tkinter GUI - Tk & Toplevel

Tkinter GUI - Tk & Toplevel
EN

Stack Overflow用户
提问于 2022-02-26 05:46:02
回答 1查看 250关注 0票数 0

我一直无法成功地启动单独的窗口--当然,主窗口Tk必须是.mainloop的发起者,而最初,这是GUI中唯一的窗口。在我完成了GUI,测试了它的功能,并且稍微有点为我自己骄傲之后,我变得很自信,并且决定加入一个用户登录窗口。

这个程序本身只是一个问答测试,随机在美国的50个首都城市进行测试--这是我从我的Python指南中偷来的一个的想法,然而,我是独立编写代码的,部分是作为练习,部分是为了学习--为体验而使用。但是,在试图让Toplevel窗口真正启动时遇到了困难之后,即使有了所有的资源,我也无法成功地完成它,并同时打开了的 for Tkinter!

试过wait_window..。尝试了grab_set()和focus_set() ..。再说一遍,我知道主窗口必须启动主循环。在世界里,我做错了什么?!这是我的代码完全结构化的方式吗?!结构不好?总之,这是密码..。我希望这个网站格式化代码后,合并一定数量的行,因为它是相当长的。

所有的代码,这么少的技巧..。LOL。事情也需要一些异常处理..。我知道这个。任何关于的建议、指导和/或帮助-我的代码中的任何方面-不仅是受欢迎的,而且是非常感谢的,因此,如果有什么东西超出了我似乎无法克服的双窗口困境,请随意把它放在前面的街道上!(预先多谢!)

我的密码

代码语言:javascript
复制
    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)来实现--如果主窗口在后面,那没问题,只要关闭登录窗口就可以了--但我一生都无法做到这一点。

我真的不想重写整件事,但我正在考虑.要查看使用画布是否可以更容易地执行此特定操作。

EN

回答 1

Stack Overflow用户

发布于 2022-02-26 08:41:36

班级的顺序是排在前面的。

因此,Main失败,因为它是在被调用之前初始化的:

代码语言:javascript
复制
class Login(tk.Toplevel):
    def __init__(self, master=Main(), takefocus=True):
        super().__init__()

我改变了顺序,这个错误就发生了。

class Main(tk.Tk):

  • then class Login(tk.Toplevel):

  1. first this:

我不知道这是否使代码工作,但它消除了错误。

另外,当您使用instantiate类时,它需要括号,所以

代码语言:javascript
复制
master=Main

变成了

代码语言:javascript
复制
master=Main()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71274372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档