框架内的网格?

2024-05-15 23:36:47 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以在Tkinter中的另一帧中放置一个按钮网格?

我想创建一个类似tic tac toe的游戏,并想使用网格功能来放置gamesquares(这将是按钮)。但是,我希望在GUI中有其他东西,而不仅仅是游戏板,所以把所有东西都放在一个网格中是不理想的。

举例说明:

O | X | X   |
----------  |
O | O | X   | Player 2 wins!
----------  | 
X | O | X   |

tic tac toe板是一个由所有按钮组成的网格,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()

Tags: text框架网格游戏tkintercolumnbuttonroot
2条回答

终于想出办法了:

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()

把网格放在一个框架内,让网格周围的填充物正常工作有点麻烦,但它能工作,所以我很高兴。

您可以任意深度嵌套Tk小部件。引用manual

The size of any master widget is determined by the size of the “slave widgets” inside. The packer is used to control where slave widgets appear inside the master into which they are packed. You can pack widgets into frames, and frames into other frames, in order to achieve the kind of layout you desire. Additionally, the arrangement is dynamically adjusted to accommodate incremental changes to the configuration, once it is packed.

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

相关问题 更多 >