框架内的网格?

时间:2010-05-04 06:31:27

标签: python grid tkinter frame

是否可以将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()

2 个答案:

答案 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

  

任何主要小部件的大小是   由“奴隶”的大小决定   小部件“里面。封隔器习惯了   控制从属小部件出现的位置   在他们所在的主人里面   包装。你可以打包小部件   帧和帧到其他帧,   为了实现那种布局   你渴望。另外,   安排动态调整为   适应增量变化   配置,一旦打包。

实际上,包含(按钮框架)和标签的框架是您必须如何构建所描述的布局的。