如何灰顯(停用)Tkinter Frame?


Tkinter 框架小元件可以包含一組小元件。我們可以透過啟用或停用其基礎框架的狀態來更改框架中元件的狀態。要停用該特定框架內所有的小元件,我們必須使用 winfor_children() 選擇位於該框架內的所有子小元件並使用 state=(‘disabled’ or ‘enable’) 屬性更改狀態。

示例

在此示例中,我們將建立一個按鈕和一個輸入小元件。最初,輸入小元件的狀態被停用。但是當我們單擊按鈕時,它將啟用框架中的所有小元件。

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

#Define a Function to enable the frame
def enable(children):
   for child in children:
      child.configure(state='enable')

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

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

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

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

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

#Create a Button to enable frame
button1 = ttk.Button(frame2, text="Enable", command=lambda: enable(frame1.winfo_children()))
button1.pack()
for child in frame1.winfo_children():
   child.configure(state='disable')

win.mainloop()

輸出

執行上述程式碼將顯示一個包含兩個標籤框架的視窗。每個框架都包含一個輸入小元件和一個用於啟用或停用框架的按鈕。

當我們單擊“啟用”按鈕時,它將啟用 Frame1。

更新於:04-05-2021

5K+ 瀏覽量

開啟您的職業生涯

完成課程獲得認證

立即開始
廣告