使用 tix.Balloon 实现 ToolTip

使用 tix.Balloon 实现 ToolTip#

参考:用Tkinter打造GUI开发工具(17)tix.Balloon气球窗口小部件

Tix.Balloon 气球窗口小部件一个部件弹出提供帮助。当用户将光标移动到已绑定了气球窗口小部件的窗口小部件中时,屏幕上将显示一个带有描述性消息的小型弹出式窗口。

使用 tix.Balloon 气球窗口小部件的构造语法如下:

balloon = tix.Balloon (master, statusbar=None)

参数 master 这代表了父部件。statusbar 是这个部件的绑定的状态条部件。 tix.Balloon 除了上面的属性外,还有一些方法可以使用。

直接看代码:

TCL_ALL_EVENTS = 0

class CustomBalloon:
    def __init__(self, window):
        self.window = window
        self.exit = -1
        self.create_widget(window)  
        
    def create_widget(self, window):
        z = window.winfo_toplevel() # 获取 TopLevel 窗口
        z.wm_protocol("WM_DELETE_WINDOW", lambda self=self: self.quitcmd())
        z.title('Tix.Balloon演示')  #Tkinter中设置窗口标题方法
        
        status = ttk.Label(window, width=40, relief='sunken')
        status.grid()
        
        # 建立2个 tix按钮
        button1 = ttk.Button(window, text='关闭窗口',
                                     command=self.quitcmd)
        button2 = ttk.Button(window, text='按钮自毁')
        button2['command'] = lambda w=button2: w.destroy()
        button1.grid()
        button2.grid()
        
        # 建立 tixballoon
        b = tix.Balloon(window, statusbar=status)

        b.bind_widget(button1, balloonmsg='关闭这个窗口',
                      statusmsg='按下这个按钮,关闭窗口。')
        
        b.bind_widget(button2, balloonmsg='删除这个按钮',
                      statusmsg='按下这个按钮,删除这个按钮。')
        
    def quitcmd (self):
        self.exit = 0

    def mainloop(self):
        foundEvent = 1
        while self.exit < 0 and foundEvent > 0:
            foundEvent = self.window.tk.dooneevent(TCL_ALL_EVENTS)

    def destroy (self):
        self.window.destroy()
        
# 必须使用 tix.Tk(),不能使用 tkinter.Tk()
root = tix.Tk()  
balloon = CustomBalloon(root)
balloon.mainloop()
balloon.destroy()

效果图:

图2 tix.Balloon 示例