Сетка в кадре? - PullRequest
       23

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

8 голосов
/ 04 мая 2010

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

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

Для иллюстрации:

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

Табличка Tic Tac Toe находится в сетке, состоящей из всех кнопок, а «игрок 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()

Ответы [ 2 ]

8 голосов
/ 04 мая 2010

Придумал способ сделать это окончательно:

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 голос
/ 04 мая 2010

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

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

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

...