在python中将光标放置在按钮上时显示文本

在python中将光标放置在按钮上时显示文本,python,tkinter,Python,Tkinter,当光标放置在按钮上时,如何在窗口中显示文本 我有下面的代码,当把光标放在按钮“Ok”上时,它必须显示文本为“按下Ok前检查填写的详细信息” 导入Tkinter 类示例(Tkinter.Frame): 定义初始化(self,*args,**kwargs): Tkinter.Frame.\uuuu init\uuuu(self,*args,**kwargs) self.l1=Tkinter.Label(self,text=“输入名称”) self.l2=Tkinter.Label(self,text

当光标放置在按钮上时,如何在窗口中显示文本

我有下面的代码,当把光标放在按钮“Ok”上时,它必须显示文本为“按下Ok前检查填写的详细信息”

导入Tkinter
类示例(Tkinter.Frame):
定义初始化(self,*args,**kwargs):
Tkinter.Frame.\uuuu init\uuuu(self,*args,**kwargs)
self.l1=Tkinter.Label(self,text=“输入名称”)
self.l2=Tkinter.Label(self,text=”“,width=40)
自包装(侧面=“顶部”)
自我包装(side=“top”,fill=“x”)
self.b1=Tkinter.Button(根,text=“确定”)
self.b1.bind(“,self.on\u enter)
self.b1.bind(“,self.on_离开)
self.b1.pack()
def on_enter(自我,事件):
self.l2.configure(text=“按Ok前检查填写的详细信息”)
离开时的def(自我,输入):
self.l2.configure(text=”“)
如果名称=“\uuuuu main\uuuuuuuu”:
root=Tkinter.Tk()
示例(root).pack(side=“top”、fill=“both”、expand=“true”)
root.mainloop()

当光标放置在标签l1上时,如果我为显示文本编写代码,同样的代码也可以正常工作。当光标放置在按钮上或进行任何修改时,是否有其他方法继续显示???

据我所知,Tk没有按钮工具提示的内置结构

在另一个GUI框架Qt(PyQt)中,这是一个内置功能,例如:

button1 = QtGui.QPushButton("This is button1", self)
button1.setToolTip("You have moused over Button1)
class Example(...):
    def __init__(...):
        ...
        self.l1.description = "This is label 1"
        self.l2.description = "This is label 2"
        self.b1.description = "This is the OK button"

        for widget in (self.l1, self.l2, self.b1):
            widget.bind("<Enter>", self.on_enter)
            widget.bind("<Leave>", self.on_leave)
        ...

    def on_enter(self, event):
        description = getattr(event.widget, "description", "")
        self.l2.configure(text=description)
将这种类型的功能添加到Tk中有一些变通方法,但直接将它们实现到程序中可能需要一些时间

实际上,您可以在模块中创建自己的类ToolTip()和一个函数来添加新的工具提示addToolTip()

以下是进行此操作的两个参考:


编辑:请注意,此处的ref1链接与问题Martineau链接中已接受的答案相同。如果我正确理解了问题,您希望在鼠标悬停在不同的小部件上时能够显示不同的消息。最简单的解决方案是向包含消息的每个小部件对象添加一个自定义属性,然后从绑定函数中的属性获取该消息

例如:

button1 = QtGui.QPushButton("This is button1", self)
button1.setToolTip("You have moused over Button1)
class Example(...):
    def __init__(...):
        ...
        self.l1.description = "This is label 1"
        self.l2.description = "This is label 2"
        self.b1.description = "This is the OK button"

        for widget in (self.l1, self.l2, self.b1):
            widget.bind("<Enter>", self.on_enter)
            widget.bind("<Leave>", self.on_leave)
        ...

    def on_enter(self, event):
        description = getattr(event.widget, "description", "")
        self.l2.configure(text=description)
类示例(…):
定义初始化(…):
...
self.l1.description=“这是标签1”
self.l2.description=“这是标签2”
self.b1.description=“这是确定按钮”
对于中的小部件(self.l1、self.l2、self.b1):
widget.bind(“,self.on_enter)
widget.bind(“,self.on_leave”)
...
def on_enter(自我,事件):
description=getattr(event.widget,“description”,“”)
self.l2.configure(文本=说明)

请参见。@martineau:我不确定OP是否在询问工具提示。他们有一个静态标签小部件,他们想在其中显示消息(我想…)@Bryan:他们可能会使用静态标签小部件,因为这是他们想到的唯一方法,但当然我可能错了(这就是为什么我没有将问题标记为重复问题)。可能重复。如果我说错话或说了一些根本不正确的话,我很乐意更改一些内容。我发布的第一个参考以非常类似的方式解决了这个问题,它提供了绑定和一些定义函数来显示文本。我不确定问题是什么,但如果我说了错话,我会道歉。我的观点只是质疑为什么我在没有任何评论的情况下被否决了。如果有人讨论为什么我的答案不正确或不相关,我完全同意被否决。我只是不喜欢在没有讨论的情况下看到随机的投票结果。人们很难通过这种方式学习。麦克斯韦·格雷迪,我并没有为此投票。这对我真的很有帮助。非常感谢你。