是否可以将Tkinter中的按钮网格放在另一个框架内?
我想创建一个类似于tic-tac-toe的游戏,并希望使用网格功能来放置gamesquares(这将是按钮)。但是,除了游戏板之外,我还想在GUI中使用其他东西,所以在一个网格中放置所有东西并不理想。
举例说明:
O | X | X |
---------- |
O | O | X | Player 2 wins!
---------- |
X | O | X |
tic tac toe board在一个由所有按钮组成的网格中,'player 2 wins'是一个框架内的标签。
这是对我正在尝试做的过度简化所以请耐心等待,因为到目前为止我设计程序的方式(电路板是动态创建的),网格最有意义。
编辑:有一个想法,但当我运行它,没有任何反应?如果我取出帧位,它会。有什么想法吗?
from Tkinter import *
root = Tk()
b = Button(root, text = "1")
b.grid(row=1, column=3)
b2 = Button(root, text = "2")
b2.grid(row=1, column=4)
f = Frame(root, bg = "red")
f.pack(side=RIGHT)
root.mainloop()
答案 0 :(得分:8)
最终找到了一种方法:
from Tkinter import *
root = Tk()
f = Frame(root, bg = "orange", width = 500, height = 500)
f.pack(side=LEFT, expand = 1)
f3 = Frame(f, bg = "red", width = 500)
f3.pack(side=LEFT, expand = 1, pady = 50, padx = 50)
f2 = Frame(root, bg = "black", height=100, width = 100)
f2.pack(side=LEFT, fill = Y)
b = Button(f2, text = "test")
b.pack()
b = Button(f3, text = "1", bg = "red")
b.grid(row=1, column=3)
b2 = Button(f3, text = "2")
b2.grid(row=1, column=4)
b3 = Button(f3, text = "2")
b3.grid(row=2, column=0)
root.mainloop()
将网格放在框架内的框架内是一个让网格周围的填充工作的黑客,但是它很有效,所以我很高兴。
答案 1 :(得分:1)
您可以任意深入嵌套Tk小部件。请manual:
任何主要小部件的大小是 由“奴隶”的大小决定 小部件“里面。封隔器习惯了 控制从属小部件出现的位置 在他们所在的主人里面 包装。你可以打包小部件 帧和帧到其他帧, 为了实现那种布局 你渴望。另外, 安排动态调整为 适应增量变化 配置,一旦打包。
实际上,包含(按钮框架)和标签的框架是您必须如何构建所描述的布局的。