python - 使用 Python Tkinter : Always on top window isn't showing custom class tooltip text

标签 python tkinter

我无法让工具提示与我的总在最前的窗口一起工作。显然,问题是你不能在总是在上面的东西之上创建东西;所以我想知道是否有解决方法或解决方案。弹出窗口需要始终位于其他窗口之上,但我还需要正确显示所有工具提示。

这是我目前拥有的精简版:

from Tkinter import *

class GUI:
    def __init__(self, root):
        Popup = Toplevel(root)
        Popup.resizable(0,0)
        Popup.attributes("-toolwindow", 1)
        Popup.wm_attributes("-topmost", 1)
        PFrame = Frame(Popup)
        self.B = Button(PFrame, width=10,height=10)
        self.B.pack()
        self.createToolTip(self.B,"Click this button.")
        PFrame.pack()

    class ToolTip(object):
        def __init__(self, widget):
            self.widget = widget
            self.tipwindow = None
            self.id = None
            self.x = self.y = 0
        def showtip(self, text):
            self.text = text
            if self.tipwindow or not self.text: return
            x,y,cx,cy = self.widget.bbox("insert")
            x = x + self.widget.winfo_rootx() +15
            y = y + cy + self.widget.winfo_rooty() +65
            self.tipwindow = tw = Toplevel(self.widget)
            tw.wm_overrideredirect(1)
            tw.wm_geometry("+%d+%d"%(x,y))
            label = Label(tw, text=self.text, justify=LEFT)
            label.pack(ipadx=1)
        def hidetip(self):
            tw = self.tipwindow
            self.tipwindow = None
            if tw: tw.destroy()
    def createToolTip(self,widget,text):
        toolTip = self.ToolTip(widget)
        def enter(event): self.tt = root.after(1500,show,event)
        def show(event): toolTip.showtip(text)
        def leave(event):
            if self.tt: root.after_cancel(self.tt)
            toolTip.hidetip()        
        widget.bind('<Enter>', enter)
        widget.bind('<Leave>', leave)

if __name__ == '__main__':
    root = Tk()
    App = GUI(root)
    root.mainloop()

最佳答案

我通过将 tw.wm_attributes("-topmost", 1) 添加到 showtip 函数来修复它。如果此解决方案不正确或是否有更好的方法,请告诉我。

关于python - 使用 Python Tkinter : Always on top window isn't showing custom class tooltip text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9135302/

相关文章:

python,ElementTree,从 xml 文件中添加和删除子元素时出现问题

Python OOP - 网络 session

python - 使用输入更改文件的一部分 - python

python - 如何使用Python计算并找到图像中对象区域的分布?

python - 仅屏蔽 numpy 中特定范围的索引

python:tkinter 显示来自网络摄像头的视频并进行 QR 扫描

python-2.7 - 如何为不同的 Tkinter [子] 菜单执行不同的回调?

python - 修改 tk.Button 上的部分文本

python - Canvas 更新变慢(可能需要释放一些对象)

python - Whoosh NestedChildren 搜索未返回所有结果