使用 Tkinter 调整窗口大小时动态调整按钮大小
先决条件: Python GUI – tkinter
按钮大小是静态的,这意味着按钮的大小一旦由用户定义就无法更改。这里的问题是在调整窗口大小时,它会影响按钮大小问题。所以这里的解决方案是,制作一个动态按钮,这意味着按钮大小会根据窗口大小而变化。
让我们通过一步一步的实现来理解:
步骤 1#:创建普通的 Tkinter 窗口
Python3
# Import module
from tkinter import *
# Create object
root = Tk()
# Adjust size
root.geometry("400x400")
# Execute tkinter
root.mainloop()
Python3
# Import module
from tkinter import *
# Create object
root = Tk()
# Adjust size
root.geometry("500x500")
# Create Buttons
button_1 = Button(root,text="Button 1")
button_2 = Button(root,text="Button 2")
# Set grid
button_1.grid(row=0,column=0)
button_2.grid(row=1,column=0)
# Execute tkinter
root.mainloop()
Python3
# Import module
from tkinter import *
# Create object
root = Tk()
# Adjust size
root.geometry("500x500")
# Specify Grid
Grid.rowconfigure(root,0,weight=1)
Grid.columnconfigure(root,0,weight=1)
Grid.rowconfigure(root,1,weight=1)
# Create Buttons
button_1 = Button(root,text="Button 1")
button_2 = Button(root,text="Button 2")
# Set grid
button_1.grid(row=0,column=0,sticky="NSEW")
button_2.grid(row=1,column=0,sticky="NSEW")
# Execute tkinter
root.mainloop()
输出:-
步骤 2#:添加按钮并设置网格。
句法:
Button(Object Name,text="Enter Text")
什么是网格?
grid() 几何管理器在父小部件中以类似表格的结构组织小部件。主小部件分为行和列,表格的每个部分都可以容纳一个小部件。它使用列、列跨度、ipadx、ipady、padx、pady、行、行跨度和粘性。
句法:
Object_name.grid(row=row value,column=column value,**attributes)
蟒蛇3
# Import module
from tkinter import *
# Create object
root = Tk()
# Adjust size
root.geometry("500x500")
# Create Buttons
button_1 = Button(root,text="Button 1")
button_2 = Button(root,text="Button 2")
# Set grid
button_1.grid(row=0,column=0)
button_2.grid(row=1,column=0)
# Execute tkinter
root.mainloop()
输出:
步骤 3#:设置 Columnconfigure 和 Rowconfigure 以调整大小。
为了随后调整用户界面的大小,我们需要为要扩展的列指定一个正权重。这是使用网格的 Columnconfigure 和 Rowconfigure 方法完成的。这个重量是相对的。如果两列具有相同的权重,它们将以相同的速率扩展。
如果单元格大于小部件怎么办。默认情况下,使用sticky=”,小部件在其单元格中居中。 sticky 可以是 N、E、S、W、NE、NW、SE 和 SW 中零个或多个的字符串连接,罗盘方向指示小部件所附着的单元格的边和角。
“NSEW” means N+S+E+W
代码:-
蟒蛇3
# Import module
from tkinter import *
# Create object
root = Tk()
# Adjust size
root.geometry("500x500")
# Specify Grid
Grid.rowconfigure(root,0,weight=1)
Grid.columnconfigure(root,0,weight=1)
Grid.rowconfigure(root,1,weight=1)
# Create Buttons
button_1 = Button(root,text="Button 1")
button_2 = Button(root,text="Button 2")
# Set grid
button_1.grid(row=0,column=0,sticky="NSEW")
button_2.grid(row=1,column=0,sticky="NSEW")
# Execute tkinter
root.mainloop()
输出: