gpt4 book ai didi

Python Tkinter 顶层

转载 作者:太空宇宙 更新时间:2023-11-04 10:40:24 26 4
gpt4 key购买 nike

我正在开发一个需要多个窗口的程序,第一个出现的是登录窗口,我使用了 Toplevel 小部件以使其他窗口成为其子窗口,但这段代码一直显示两个窗口而不是一个。

from Tkinter import Frame, Toplevel
from ttk import Label, Entry, Button


class loginWindow(Toplevel):
def __init__(self):
Toplevel.__init__(self)
self.title("Title")
self.frame = Frame(self)
self.frame.pack()
self.__make_layout()
self.mainloop()

def __make_layout(self):
self.frame.user_name_label = Label(text="User name:")
self.frame.user_name_text = Entry()
self.frame.user_name_label.grid(row=0, column=0)
self.frame.user_name_text.grid(row=0, column=1)
self.frame.password_label = Label(text="Password:")
self.frame.password_text = Entry()
self.frame.password_label.grid(row=1, column=0)
self.frame.password_text.grid(row=1, column=1)
self.frame.login_button = Button(text="Login")# , command=self.__create_window)
self.frame.login_button.grid(row=2, column=0, columnspan=2)


if __name__ == '__main__':
win1 = loginWindow()

最佳答案

_make_layout 中创建的所有小部件都是在没有父级的情况下创建的。这意味着他们是默认根的 child 。您需要将父级传递给它们中的每一个,就像您对 Frame 所做的一样。像这样:

self.frame.user_name_label = Label(self.frame, text="User name:")
self.frame.user_name_text = Entry(self.frame)
# etc.

当我运行您的确切代码时,在我尝试的任何平台上都没有出现第二个窗口。我得到的最接近的是在 OS X 上,其中默认根窗口的条目出现在窗口菜单中,但窗口本身仍然没有出现并且小部件都在 Toplevel 上结束(尽管不在 Frame 你想要它们的地方)。但是 Tkinter 在此处显示第二个窗口并将您的部分或全部小部件放在上面肯定是合法的。

关于Python Tkinter 顶层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20984830/

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