框架内的网格?

Sam*_*Sam 8 python grid tkinter frame

是否可以将Tkinter中的按钮网格放在另一个框架内?

我想创建一个类似于tic-tac-toe的游戏,并希望使用网格功能来放置gamesquares(这将是按钮).但是,除了游戏板之外,我还想在GUI中使用其他东西,因此在一个网格中放置所有东西并不理想.

为了显示:

O | X | X   |
----------  |
O | O | X   | Player 2 wins!
----------  | 
X | O | X   |
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)

Sam*_*Sam 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()
Run Code Online (Sandbox Code Playgroud)

将网格放在框架内的框架内是一个黑客,让网格周围的填充工作,但它的工作,所以我很高兴.

  • 网格不是"东西",它是窗口小部件用于在框架内排列自己的方法; 请注意,没有构建"网格".这是Tk的成分模型,它类似于TeX,它本身源于500年的印刷经验.嵌套框是我们发现排列文本类对象的方法:它不是黑客. (2认同)