如何阻止 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+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.