如何灰显(禁用)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+ 浏览量

开启您的职业生涯

完成课程获得认证

立即开始
广告