Действительно ли возможно поместить сетку кнопок в 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()
Наконец-то придумали, как это сделать:
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 можно вкладывать произвольно глубоко. Цитата из руководства :
Размер любого главного виджета определяется размером «подчиненных виджетов» внутри. Упаковщик используется для контроля места появления подчиненных виджетов внутри главного, в котором они упакованы. Вы можете упаковать виджеты в фреймы и фреймы в другие фреймы , чтобы получить желаемый вид макета . Кроме того, структура динамически корректируется для внесения дополнительных изменений в конфигурацию после ее упаковки.
Действительно, фрейм, содержащий (фрейм кнопок) и метку, - это то, как вы должны структурировать макет, который вы описываете.