检查 tkinter 中按钮的状态

问题描述 投票:0回答:4

在 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 语句不起作用的问题。

python button canvas tkinter bind
4个回答
15
投票

经过一番研究,我终于找到了解决方案。

print(self.button['state'])

打印:

disabled

所以我可以使用:

state = str(self.button['state'])
if state == 'disabled':
    #print the correct text!

0
投票

State 仅返回 string。对我来说

if state == DISABLED:
也很好用。

唯一的区别是我没有在类中使用它:而是在我的主程序中使用。

请参考以下屏幕截图:

state


0
投票

如果您使用 ttk.Button 那么

button = ttk.Button(text=text, command=command)
print(str(button['state']))

-1
投票
from tkinter import *
app_win  = Tk()

name_btn = Button(app_win,text = 'aaaaaaa')
name_btn.pack()


print(name_btn["state"])
#normal

app_win.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.