Python 3.4.0。
你能帮我理解这里发生了什么:
from tkinter import *
root = Tk()
f = Frame(root, borderwidth=2) #
for relief in [RAISED, SUNKEN, FLAT, RIDGE, GROOVE, SOLID]:
Label(f, text=relief, width=10, relief = relief).pack(side=LEFT) #
#f = Frame(root, borderwidth=2, relief = relief)
#Label(f, text=relief, width=10).pack(side=LEFT)
f.pack(side=LEFT, padx=5, pady=5)
root.mainloop()
如果我现在取消注释评论的行并评论那些没有'#'最后标记,结果是一样的。
第一种情况:现状。这对我来说是可以理解的。在循环之前,我们创建一个框架。然后pack方法将每个标签放在父窗口小部件中(即f)。在这种情况下,f会扩展并包含多个标签。
嗯,第二种情况:如果我切换注释标记。 帧f总是新的。标签也总是新的。标签始终放在单独的框架上。我建议在每一帧中显示5个不同标签的帧。
你能帮我理解为什么结果一样吗?
答案 0 :(得分:0)
听起来你想要五个独立的窗户,每个窗户都可以移动,关闭等等。
如果是这样,您应该使用Toplevel
小部件而不是Frame
。
from tkinter import *
root = Tk()
for relief in [RAISED, SUNKEN, FLAT, RIDGE, GROOVE, SOLID]:
t = Toplevel(root, borderwidth=2, relief = relief)
Label(t, text=relief, width=10).pack(side=LEFT)
root.mainloop()