В Tk с Python, как мне указать Frame или Canvas для изменения размера моего окна? - PullRequest
3 голосов
/ 28 мая 2011

Я совершенно новичок в 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 Ответ

5 голосов
/ 28 мая 2011

Установите expand = 1 в вызовах на pack(), чтобы настроить виджеты при изменении размеров их контейнеров.

self.frame.pack(fill = "both", expand = 1)
...
self.canvas.pack(fill = "both", expand = 1)

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

...