如何阻止 Tkinter Frame 缩小以适应其内容?


默认情况下,Tkinter 框架中所有部件的大小属性都设置为部件本身的大小。框架容器会自动缩小或扩展以适应其内部的部件。要停止允许框架缩小或扩展部件,我们可以使用 **propagate(布尔值)** 方法与任何 pack 或 grid 几何管理器一起使用。此方法阻止框架传播部件的大小调整。

我们可以通过两种一般方法定义 propagate 属性:

  • **pack_propagate (False)** – 如果框架使用 Pack 几何管理器定义。

  • **grid_propagate (False)** – 如果框架使用 Grid 几何管理器定义。

示例

在此示例中,我们将在一个框架内创建两个 Entry 部件,不允许部件缩小或适应。

#Import the required Libraries
from tkinter import *
from tkinter import ttk
from tkinter import messagebox

#Create an instance of Tkinter frame
win = Tk()

#Set the geometry of tkinter frame
win.geometry("750x250")

#Define a function to show a message
def submit():
   messagebox.showinfo("Success", "Submitted Successfully!")

#Creates top frame
frame1 = LabelFrame(win, width= 400, height= 180, bd=5)
frame1.pack()

#Stop the frame from propagating the widget to be shrink or fit
frame1.pack_propagate(False)

#Create an Entry widget in Frame1
entry1 = ttk.Entry(frame1, width= 40)
entry1.insert(INSERT,"Enter Your Name")
entry1.pack(pady=30)
entry2= ttk.Entry(frame1, width= 40)
entry2.insert(INSERT, "Enter Your Email")
entry2.pack()

#Creates bottom frame for button
frame2 = LabelFrame(win, width= 150, height=100)
frame2.pack()

#Create a Button to enable frame
button1 = ttk.Button(frame2, text="Submit", command= submit)
button1.pack()

win.mainloop()

输出

运行以上代码以显示一个包含两个框架的窗口,其中定义了部件。

在给定的输出中,窗口包含一个框架,其中包含 Entry 部件,这些部件不会缩小其内部定义的部件。

更新于: 2021年5月4日

11K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告