【发布时间】:2012-07-16 17:06:51
【问题描述】:
我有一堆这样的框架:
+--+
| |
+-+--+-+
| |
+-+------+-+
| |
+----------+
但我希望它们是这样的:
+--+
| |
+---+--+
| |
+---+------+
| |
+----------+
最好的方法是什么?
正在使用 pack,但无法让它们正常运行。由于某种原因,使用网格根本没有显示它们,我的程序挂起
# Main script
root = Tk()
root.geometry('500x500')
for task in TaskList:
GuiTools.TaskBox.TaskBox(root, task)
root.mainloop() # program hangs from this line, to the point of having to use kill to close it
# Taskbox class
class Taskbox(master, task):
__init__(self)
self.TaskFrame = Frame(master, borderwidth=3, relief=RAISED)
. . .
Putting stuff in frame
. . .
self.TaskFrame.pack() # Gives result 1
#self.TaskFrame.grid(column=1, sticky='ne') # no display, causes hang
【问题讨论】:
-
如果您将小部件附加到特定框架或顶层,请使用全部
pack或全部grid。否则,tk会很高兴地为您的小部件找出合适的位置,直到永远。 -
@mgilson 我认为这可能是正在发生的事情。我使用 pack 将框架收缩包装到其中一个组件上,这样我就可以实现我正在处理的一些其他功能。当我把网格放在那里时,这会导致挂起。
-
可能。我对
pack了解不多,因为我从不使用它(这对我来说很反直觉,但有些人似乎经常使用它......)。 -
明确一点:您可以在同一个应用程序中使用 pack 和 grid,但不能在同一个容器小部件中同时使用。