【问题标题】:How do I create a window that uses both .pack() and .grid()? [duplicate]如何创建一个同时使用 .pack() 和 .grid() 的窗口? [复制]
【发布时间】:2015-08-26 16:03:13
【问题描述】:
def __init__(self):
    self.root = Tk()

    self.title = Frame(self.root, width = 500, height = 35)
    self.title.pack(side = TOP, expand = True)

    self.frame = Frame(self.root, width = 574, height = 574)
    self.frame.grid(columnspan = 30, rowspan = 31)

    self.label = Label(self.title, width = 300, height = 30)
    self.label.pack()

    self.root.mainloop()

我希望能够在网格顶部有一个标签,但是当我运行主循环时出现错误:“无法在 .55652592 内使用几何管理器网格,该网格已经有由包管理的从属。”谢谢。

【问题讨论】:

  • 你到底想要什么布局?如果您希望标签出现在网格顶部,您可以使用place。否则将网格化的小部件放在可以打包的框架内。

标签: python tkinter


【解决方案1】:

我认为不可能同时使用两者。我建议始终使用.grid(),因为它有更广泛的选择。 .grid().pack() 都是窗口管理器,你不能同时运行两个窗口管理器(至少对于同一个程序)。

您可能想要查看tkMessageBox,或者为您的标签指定一个空间(使用grid,您可以让一个标签替换另一个),而不是使用label

此资源可能会有所帮助:

http://effbot.org/tkinterbook/grid.htm

建议不要在同一个主窗口中混合使用两个管理器。

祝你好运,编码愉快!

【讨论】:

    猜你喜欢
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多