Сетка в кадре?

Действительно ли возможно поместить сетку кнопок в Tkinter в другом кадре?

Я желаю создать tic-tac-toe как игра и хотеть использовать функцию сетки для помещения gamesquares (который будет кнопками). Однако я хотел бы иметь другой материал в GUI кроме просто игровой доски, таким образом, это не идеально, чтобы просто иметь все в одной сетке.

Проиллюстрировать:

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

Тик tac плата пальца ноги находится в сетке, которая составлена из всех кнопок и 'плеера, 2 победы' являются маркировкой в кадре.

Это - упрощение того, что я пытаюсь сделать, так терпите меня для способа, которым я разработал программу до сих пор (плата динамично создается), сетка имеет большую часть смысла.

Править: Имела мысль, но когда я выполняю ее, ничего не происходит? Если я вынимаю кадр, укусил его, делает. Какие-либо идеи?

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()
8
задан Sam 4 May 2010 в 06:55
поделиться

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

Размещение сетки внутри фрейма внутри фрейма - это своего рода хитрость, чтобы заставить работать отступы вокруг сетки, но это работает, так что я счастлив.

8
ответ дан 5 December 2019 в 18:57
поделиться

Виджеты Tk можно вкладывать произвольно глубоко. Цитата из руководства :

Размер любого главного виджета определяется размером «подчиненных виджетов» внутри. Упаковщик используется для контроля места появления подчиненных виджетов внутри главного, в котором они упакованы. Вы можете упаковать виджеты в фреймы и фреймы в другие фреймы , чтобы получить желаемый вид макета . Кроме того, структура динамически корректируется для внесения дополнительных изменений в конфигурацию после ее упаковки.

Действительно, фрейм, содержащий (фрейм кнопок) и метку, - это то, как вы должны структурировать макет, который вы описываете.

1
ответ дан 5 December 2019 в 18:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: