我一直在构建一个程序,在试图更改ttk.Button()
的状态时遇到了一个奇怪的响应。到目前为止,一切都很顺利,但后来我遇到了一些问题,并发现state
选项实际上不是创建ttk.Button()
时的选项。我知道如何使用Style()等更改它。然而,当创建ttk.Entry()
对象时,它接受状态作为选项并相应地设置它。奇怪的反应是当你试图用另一个按钮改变状态时
这是一个代码,其中state
被定义为disabled
-这表明该选项已被接受。但该功能不起作用。至少对我来说
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
def change_state():
if button1['state'] == 'disabled':
button1['state'] = 'normal'
elif button1['state'] == 'normal':
button1['state'] = 'disabled'
button1 = ttk.Button(root, state='disabled', text='test')
button1.pack()
button2 = ttk.Button(root, text='change state', command=change_state)
button2.pack()
root.mainloop()
在这里,我做了一些随机修改,并在函数中添加了另一行
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
def change_state():
print(button1['state'])
if button1['state'] == 'disabled':
button1['state'] = 'normal'
elif button1['state'] == 'normal':
button1['state'] = 'disabled'
button1 = ttk.Button(root, state='disabled', text='test')
button1.pack()
button2 = ttk.Button(root, text='change state', command=change_state)
button2.pack()
root.mainloop()
现在不知从何而来,这个函数起作用了。尽管首先什么都不应该起作用,因为state
不被接受为选项,因此不能以标准方式进行配置。其他任何人在运行这两个版本时都有相同的响应。谁能解释一下发生了什么事?我认为同样的情况也适用于ttk.Entry()
,也可能适用于其他人
由
button[state]
返回的值不是pythonstr
,因此通过执行button1['state'] == 'disabled'
的操作总是会出错。可以使用返回<class '_tkinter.Tcl_Obj'>
的type(button1['state'])
进一步检查它相关问题 更多 >
编程相关推荐