在应用程序中调整 tkinter 小部件的大小

Resizing tkinter widgets in an application

我正在尝试使用 tkinter 构建导航器应用程序,并且我对制作 GUI 和一般使用 tkinter 还很陌生。我似乎无法弄清楚如何在调整整个 window 大小时很好地调整小部件的大小。当前调整大小的工作方式如下图所示。

顶部的描述是一个 tkinter Message 小部件,中间的导航树是一个清单,两个按钮是常规按钮,按钮下方的文本是一个标签对象。我使用 .grid() 方法将它们放在 tkinter 根目录中,并使用 ipadx、ipady、padx 和 pady 根据需要调整它们的大小。

如果 window 的大小调整得有点类似于清单对象,我希望文本和按钮不会消失。理想情况下,在调整 window 大小时,我希望文本自动换行并为自己腾出空间。我可以为 window 设置一个最小大小,以确保一切都合适,但调整大小仍然不够优雅。我好像也完全不懂自动换行。

这是示例代码,可帮助您了解调整大小的工作原理。 我建议你使用 Grid.rowconfigure()Grid.columnconfigure()

示例代码:

import tkinter as tk
from tkinter import Grid, Button

root = tk.Tk()
root.title("resize button")
root.geometry("500x500")


# here you need to put on what do you want to use row configure, index(row) and weight
Grid.rowconfigure(root, 0, weight=1)  # we use on root, row=0 weight=1
Grid.columnconfigure(root, 0, weight=1)

#configure 2nd row
Grid.rowconfigure(root, 1, weight=1)


#configure 3rd row
Grid.rowconfigure(root, 2, weight=1)

#configure 2nd column
Grid.columnconfigure(root, 1, weight=1)

button1 = Button(root, text="Button1")
button2 = Button(root, text="Button2")
button3 = Button(root, text="Button3")

button1.grid(row=0, column=0, sticky="nsew")
button2.grid(row=1, column=0, sticky="nsew")
button3.grid(row=2, column=0, sticky="nsew")

button1_1 = Button(root, text="Button1_1")
button2_1 = Button(root, text="Button2_1")
button3_1 = Button(root, text="Button3_1")

button1_1.grid(row=0, column=1, sticky="nsew")
button2_1.grid(row=1, column=1, sticky="nsew")
button3_1.grid(row=2, column=1, sticky="nsew")

root.mainloop()