我试图禁用框架中的所有(ttk)小部件,但是scale小部件似乎给我带来了一些麻烦,因为它引发了以下异常:
_tkinter.TclError: unknown option "-state"
一些相关代码:
import tkinter as tk
from tkinter import ttk
def disable_widgets(parent):
for child in parent.winfo_children():
child.config(state = 'disabled')
root = tk.Tk()
# Frame full of widgets to toggle
frame_of_widgets = ttk.Frame(root)
frame_of_widgets.pack()
# Button to be disabled
button_to_disable = ttk.Button(frame_of_widgets)
button_to_disable.pack()
# Entry to be disabled
entry_to_disable = ttk.Entry(frame_of_widgets)
entry_to_disable.pack()
# Scale to be disabled
scale_to_disable = ttk.Scale(frame_of_widgets)
scale_to_disable.pack()
# Button that disables widgets in frame
disable_button = ttk.Button(root,text="Disable",command= lambda: disable_widgets(frame_of_widgets))
disable_button.pack()
root.mainloop()
它适用于按钮和条目,但不适用于刻度。我认为ttk的一个好处是使widget与常用的方法和属性更加统一,所以我猜我可能是错误地访问了这三个小部件?在
对于ttk小部件,使用
state
方法。按钮和条目小部件的state
方法只是一个方便的函数,可以模仿标准的按钮和条目小部件。在您可以这样重写函数:
在这里的ttk文档中提到了ttk状态(尽管描述近乎无用):https://docs.python.org/3.1/library/tkinter.ttk.html#widget-states
相关问题 更多 >
编程相关推荐