#python #tkinter #anchor #packing
#python #tkinter #привязка #упаковка
Вопрос:
Я совершенно новичок в Tk и концепции упаковки, так что потерпите меня. Вот мой код:
from Tkinter import *
class frm_main:
def __init__(self, parent):
self.frame = Frame(parent, bg="green") #green for testing
self.frame.pack(fill="both")
self.canvas = Canvas(self.frame, bg="black", width=1000, height=700)
self.canvas.pack(fill="both")
root = Tk()
main_frm = frm_main(root)
root.mainloop()
Я попробовал несколько разных вариантов и тестов, и похоже, что рамка и холст закреплены и расширяются в направлении x, но изменение размера в направлении y оставляет кучу пустого пространства.
Как мне привязать рамку ко всем сторонам моего окна, а затем холст для привязки ко всем сторонам моего фрейма? Должен ли я вообще использовать рамку?
Ответ №1:
Установите expand = 1
в вызовах pack()
, чтобы виджеты корректировались при изменении размера их контейнеров.
self.frame.pack(fill = "both", expand = 1)
...
self.canvas.pack(fill = "both", expand = 1)
Вы можете использовать рамку для группировки набора виджетов или добавления дополнительной границы, но в этом примере рамка не нужна.