我創建了一個需要使用place()管理器的應用程式。我嘗試使用pack(),grid()但經過多次嘗試和努力,它并沒有達到我的目標。由于我幾乎一直使用relx=并且rely=我想將我的應用程式放在多個作業系統上,因此我需要調整視窗大小以適應所有小部件而不接觸它們。
有沒有辦法做到這一點?由于許多作業系統及其更新會改變渲染小部件的大小,因此我不希望用戶一直調整視窗大小。我希望它盡可能緊密地貼合或獲得最小寬度和高度,以便我可以添加一些緩沖區。這可能嗎?如果沒有,有沒有辦法修復我的應用程式而無需重寫所有內容?
筆記:
我發現了類似的東西:Get tkinter widget size in pixels,但我無法正常作業。
uj5u.com熱心網友回復:
我想到了。您可以使用widget.winfo_height()/widget.winfo_width()函式來獲取最小像素大小。由于該window.geometry()函式需要像素大小,您可以創建兩個串列:一個用于寬度,一個用于高度。通過添加最少數量的小部件,您可以獲得所需的大小。
代碼:
height_widget_list = [main_label, main_notebook, the_terminal, quit_button, settings_button]
width_height_list = [commands_label, main_notebook, quit_button]
widget_list = [main_label, main_notebook, the_terminal, quit_button, settings_button, commands_label]
# Widgets must be updated for height and width to be taken
for widget in widget_list:
widget.update()
height_required_list = []
width_required_list = []
# Collects data
for widget in height_widget_list:
height_required_list.append(int(widget.winfo_height()))
for widget in width_height_list:
width_required_list.append(int(widget.winfo_width()))
# Get height requirement
minimum_height = 0
for height in height_required_list:
minimum_height = height
# Get width requirement
minimum_width = 0
for width in width_required_list:
minimum_width = width
# Make window correct size make window require the correct sizing
window.geometry("{}x{}".format(minimum_width, minimum_height))
window.resizable(False, False)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/469150.html
