В Tk с Python, как мне указать рамку или холст для изменения размера моего окна?

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

Вы можете использовать рамку для группировки набора виджетов или добавления дополнительной границы, но в этом примере рамка не нужна.