📌  相关文章
📜  使用 Tkinter 调整窗口大小时动态调整按钮大小

📅  最后修改于: 2022-05-13 01:54:19.516000             🧑  作者: Mango

使用 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 中零个或多个的字符串连接,罗盘方向指示小部件所附着的单元格的边和角。

代码:-

蟒蛇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()

输出: