更新:
根据您在下面的评论,您正在查看ttkwidgets
库中的小部件。
基于此,我对他们的文档站点和代码本身进行了一些挖掘,发现没有定义的方法来禁用小部件。
基于这部分代码:
我可以通过使用打印出 ScaleEntry 的所有可能参数.keys()
。
示例代码:
from ttkwidgets import ScaleEntry
import tkinter as tk
window = tk.Tk()
scaleentry = ScaleEntry(window, scalewidth=200, entrywidth=3, from_=0, to=20)
scaleentry.config_entry(justify='center')
print(scaleentry.keys())
scaleentry.pack()
window.mainloop()
主要结果:
['borderwidth', 'class', 'compound', 'cursor', 'entryscalepad', 'entrywidth', 'from', 'height', 'orient', 'padding', 'relief', 'scalewidth', 'style', 'takefocus', 'to', 'width']
从列表中并扫描 ScaleEntry 的代码,不存在禁用此比例的此类参数。所以我几乎得出了不可能的结论。然而,在阅读了构成 ScaleEntry 类的代码后,我发现了这一行:
我意识到我们仍然可以通过针对_scale
win 的内部类属性来禁用它!这是因为归根结底,ScaleEntry
小部件只是一个具有 2 个类属性的 tk 框架。一个ttk.Scale
和一个ttk.Entry
。
例子:
from ttkwidgets import ScaleEntry
import tkinter as tk
window = tk.Tk()
state = True
scaleentry = ScaleEntry(window, scalewidth=200, entrywidth=3, from_=0, to=20)
scaleentry.config_entry(justify='center')
print(scaleentry.keys())
scaleentry.pack()
def toggle_state():
global state
if state:
scaleentry._scale.state(['disabled'])
scaleentry._entry.state(['disabled'])
state = False
else:
scaleentry._scale.state(['!disabled'])
scaleentry._entry.state(['!disabled'])
state = True
tk.Button(window, text='Toggle Scale', command=toggle_state).pack()
window.mainloop()
切换前的示例:
切换后的示例: