我想我错过了一些关于Tkinter的基本知识。
使用相同的隐藏根窗口创建多个窗口的正确方法是什么?我可以打开一个窗口,但一旦关闭,后续的窗口显示空白,其中没有任何小部件。我还注意到,如果我看到根窗口可见,当我关闭第一个“真实”窗口时,它会消失。
我会发布代码,但我无法弄清楚导致这种行为的原因,而且我的实际代码相当复杂,并且必须在另一个(甚至更复杂的)程序中运行。
我尝试使用.quit()
或.destroy()
关闭窗口,并将mainloop()
和wait_window()
循环放在不同的位置,但所有内容仍然有错误或更坏的事情出了问题。我想我正在寻找的只是一个不同的视角。
我的问题似乎与here类似,但我无法从答案中获得任何新内容。
有什么想法吗?我知道这有点模糊。感谢
解决:
这可能对任何人都无济于事,但我想出了问题所在。我有几类窗口,每个窗口都来自Tkinter.Toplevel。在我的基础Window
课程中,我创建了一个close()
函数,调用self.destroy()
。然后在它的子类中我添加了自定义代码来存储它们的几何等,最后调用Window.close(self)
。关于那个的东西不起作用,因为如果我只使用self.quit()
而不是调用超类的close()
,一切都很好。
答案 0 :(得分:2)
您的问题太模糊,无法确定问题所在。请放心,当您正确使用它时,可以很容易地创建多个窗口,并随意隐藏和显示它们。
你问创建多个窗口的正确方法是什么;答案就是为每个窗口调用Toplevel(),仅此而已。然后由您将窗口小部件放在该窗口内。没有秘密,没有隐藏的选项,没有额外的命令。只需确保每个子窗口小部件的父设置都已正确设置。
这是一个简单的例子:
import Tkinter as tk
import sys
def exit():
sys.exit(0)
root = tk.Tk()
root.wm_withdraw()
for i in range (10):
top = tk.Toplevel(root)
top.title("Window %s" % i)
label = tk.Label(top, text="This is toplevel #%s" % i)
button = tk.Button(top, text="exit", command=exit)
label.pack()
button.pack()
root.mainloop()