在 tkinter GUI 上,我想根据悬停在其上的按钮的状态在画布上打印不同的消息。如果按钮本身被禁用,我想在画布上显示另一条消息,而不是按钮正常时的消息。 我有这个(删除的)相关代码:
from tkinter import *
class app:
def __init__(self):
self.window = Tk()
self.button = Button(self.window,text="Button",command=self.someCommand,state=DISABLED)
self.button.bind("<Enter>", self.showText)
self.button.bind("<Leave>", self.hideText)
self.window.mainloop()
def showText(self):
if self.button["state"] == DISABLED:
#print this text on a canvas
else:
#print that text on a canvas
def hideText(self):
#remove text
def main()
instance = app()
main()
这总是在画布上绘制“那个文本”,而不是“这个文本”
我也尝试过以下方法:
self.button['state']
== 'disabled'
== 'DISABLED'
如果我打印:
print(self.button["state"] == DISABLED)
它给了我:
False
使用以下方法更改状态:
self.button["state"] = NORMAL
按我的预期工作。
我已经阅读了这里的一些主题,但似乎没有一个主题回答了为什么 if 语句不起作用的问题。
经过一番研究,我终于找到了解决方案。
print(self.button['state'])
打印:
disabled
所以我可以使用:
state = str(self.button['state'])
if state == 'disabled':
#print the correct text!
如果您使用 ttk.Button 那么
button = ttk.Button(text=text, command=command)
print(str(button['state']))
from tkinter import *
app_win = Tk()
name_btn = Button(app_win,text = 'aaaaaaa')
name_btn.pack()
print(name_btn["state"])
#normal
app_win.mainloop()