簡體   English   中英

如何顯式調整 tkinter 中的幀大小?

[英]How to explicitly resize frames in tkinter?

所以我目前正在編寫一段代碼,該代碼稍后將集成到其他東西中以充當設置配置器。 目前,我想要一個 window,如下所示: 布局

其中每個彩色框都是一個框架。 此 window不可調整大小,始終為 480x720 像素。 因此,我希望我使用的 3 個幀,側邊欄(黃色)、容器(藍色)和靜態(紅色)始終保持相同的大小,並以大致相同的比率填充 window,如上圖所示(不需要精確的)。

此 window 的代碼如下

        self.window = tk.Tk()

        self.windowHeight = 480
        self.windowLength = 720
        self.windowDimensions = str(self.windowLength)+"x"+str(self.windowHeight) #make diemnsions string; dimensions are set as a single string
        self.window.geometry(self.windowDimensions)
        self.window.resizable(width=False, height=False)

        self.container = tk.Frame(self.window, relief="sunken", borderwidth=2) #instantiate new window
        self.sideBar = tk.Frame(self.window,  relief="sunken", borderwidth=2)
        self.static = tk.Frame(self.window, relief="sunken", borderwidth=2)

        self.sideBar.grid_propagate(False)
        self.sideBar.grid(row=0, column=0)
        self.container.grid(row=0,column=1)
        self.static.grid(row=5, column=1)


        self.configuratorObject = configuratorObject 

        audioButton = tk.Button(self.sideBar, text="Audio Page", command=lambda: self.raisePage("audioPage"))
        colourButton = tk.Button(self.sideBar, text="Colours", command=lambda: self.raisePage("coloursPage"))
        saveButton = tk.Button(self.static, text = "Save", state="disabled")
        applyButton = tk.Button(self.static, text = "Apply", state="disabled")
        audioButton.pack()
        colourButton.pack()
        saveButton.pack()
        applyButton.pack()

我試圖改變網格的heightwidth參數,但它們似乎真的沒有做任何事情。 那么我怎么能明確定義框架的布局和大小呢?

任何幫助表示贊賞

在你寫的評論中

如果有辦法讓 tkinter 做到這一點,那就太好了

這絕對是首選方式,而不是強制小部件成為特定大小。

我們將從使用pack而不是grid開始這三個幀。 對於這樣的基本布局,它需要的代碼行數比grid少。

self.sideBar.pack(side="left", fill="y")
self.static.pack(side="bottom", fill="x")
self.container.pack(side="top", fill="both", expand=True)

接下來,添加左側的按鈕。 這將導致左框架的寬度縮小以適合按鈕。 因為我們使用了fill="y" ,所以高度將被強制保持為 window 的全高。

audioButton.pack(side="top", fill="x")
colourButton.pack(side="top", fill="x")

最后,在底部添加按鈕。 您的原始代碼顯示它們從上到下堆疊,但您的插圖將它們顯示在一個水平行中。 此示例符合插圖。

applyButton.pack(side="right", padx=10)
saveButton.pack(side="right", padx=10)

這樣,我們最終得到一個 window,如下所示,當您調整 window 的大小時,比例和方向保持完全相同:

截屏


注意:您也可以使用grid來執行此操作,但需要多幾行代碼才能將權重應用於行和列。 當布局不自然地適合網格時,我個人更喜歡pack ,因為它需要更少的代碼行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM