簡體   English   中英

如何動態設置我的小部件的大小和填充以適應 Tkinter 中的 window?

[英]How to set my widgets' size and padding dynamically to fit window in Tkinter?

我是 Tkinter 的新手,還在學習。 我的桌面分辨率是 1366x768,我正在為 2048x768 的環境進行開發。 現在我通過像這樣檢測它來設置 window 分辨率 -

w = main_container.winfo_screenwidth()
h = main_container.winfo_screenheight()
main_container.geometry(str(w) + "x" + str(h))

現在我有幾個屏幕,我不能在每個屏幕上都使用網格。 就像我有一個登錄屏幕,其中有一個這樣的框架-

self.frame_background = tk.Frame(self.frame_parent, bg='#ffffff')
self.frame_background.pack(fill='both', expand=True, padx=100,
                               pady=100)

這只是一個小部件的示例。 由於 padx 和 pady 的值固定為 100,如果我在 640x480 分辨率的設備上運行我的應用程序,布局會變得過於拉伸,並且在此框架內幾乎看不到任何東西。 如何根據屏幕尺寸和分辨率動態設置這些 padx 和 pady 以及其他寬度和高度值?

現在我有幾個屏幕,我不能在每個屏幕上都使用網格。

為什么你不能? 沒有什么能阻止您在每個屏幕上使用grid 盡管如此,在不同的框架中混合和匹配packgrid實際上是很常見的,並且可以說是一種最佳實踐。

就像我有一個登錄屏幕,其中我有一個像這樣的 Label...

該語句后面的代碼沒有Label ,因此很難知道您要做什么。

如果我在 640x480 上運行我的應用程序...

首先你說你的桌面分辨率是 1366x768,然后說你的目標是 2048x768,現在你問的是 640x480。 這是一個相當廣泛的值。 如果您必須支持低至 640x480 的內容,那么您絕對不應該將填充硬編碼為如此巨大的值。 通常填充從不超過一兩個。 Tkinter 應用程序可以適應各種屏幕尺寸,但這依賴於盡可能硬編碼小部件的尺寸和填充。

如何根據屏幕尺寸和分辨率動態設置這些 padx 和 pady 以及其他寬度和高度值?

一般來說,你不應該那樣做。 tkinter 的一般經驗法則是,您將小部件設置為所需的最小尺寸,並讓幾何經理擔心拉伸或收縮它們以適應可用空間。 該規則有一些例外,但總的來說,該規則運作良好。

不幸的是,如果不了解您正在嘗試做什么,就很難回答幾何管理問題。 例如,我們需要知道為什么您認為需要 100 像素的填充。 這似乎非常不尋常。 另外,我們需要知道你的框架里還有什么,你的框架里有什么,等等。

我的建議是刪除填充,或將它們設置為非常小的值。 然后,確保使用所有可用的幾何管理器選項,例如使用pack fillexpand ,以及用於gridsticky和其他選項。

暫無
暫無

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

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