在应用程序中调整 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()
我正在尝试使用 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()