为什么工具提示出现在后台

时间:2020-09-18 20:23:40

标签: python-3.x tkinter tooltip

我在tkinter应用程序中搜索工具提示。现在,我在youtube上找到了一个示例。但是此工具提示出现在后台,没有用。我如何才能将其始终放在我的应用程序前面,以便用户意识到它?

查看我的图片:工具提示文本显示在我的“应用程序”窗口后面。 如何将其移到我的应用程序的前面?

ToolTip, snap shot

Jack Shutzman https://youtu.be/MC9nuMBd390

from tkinter import *
class CreateToolTip(object):
    def __init__(self, widget, text='widget info'):
        self.waittime = 500
        self.wraplength = 180
        self.widget = widget
        self.text = text
        self.widget.bind('<Enter>', self.enter)
        self.widget.bind('<Leave>', self.leave)
        self.widget.bind('<ButtonPress>', self.leave)
        self.id = None
        self.tw = None
        
    def enter(self, event = None):
        self.schedule()
        
    def leave(self, event = None):
        self.unschedule()
        self.hidetip()
        
    def schedule(self):
        """ Show the tip """
        self.unschedule()
        self.id = self.widget.after(self.waittime, self.showtip)
        
    def unschedule(self):
        id = self.id
        self.id = None
        if id:
            self.widget.after_cancel(id)
            
    def showtip(self, event=None):
        """ Create the window for the tip """
        x = y = 0
        x, y, cx, cy = self.widget.bbox("insert")
        # The shift from top/left of the widget, for the tip to show
        x += self.widget.winfo_rootx() + 25
        y += self.widget.winfo_rooty() + 20
        # creates a toplevel toplevel window (like Frame, used for pop upor dialogue)
        self.tw = Toplevel(self.widget)
        # Leaves only the label and removes the app window decorations (wm -window manager)
        self.tw.wm_overrideredirect(True)
        # self.tw.wm_overrideredirect(False) # to see the windo decorations
        self.tw.wm_geometry("+%d+%d" % (x,y))
        
        # For Mac OS
        try:
            self.tw.tk.call("::tk::unsupported::MacWindowStyle",
                            "style", self.tw._w,
                            "help", "noActivates")
        except TclError:
            pass
        label = Label(self.tw, text=self.text, justify='left',
                      background="white", relief='solid', borderwidth=1,
                      wraplength= self.wraplength)
        label.pack(ipadx=1)
        
    def hidetip(self):
        tw = self.tw
        self.tw= None
        if tw:
            tw.destroy()

我还需要mybe帖子,我如何使用它。

import tkinter as tk
from tkinter import ttk
import ToolTip

....

loadbtn = tk.Button(labelframe, text='Load', width=15, command=self.buttonLoadIni)
loadbtn.grid(row=1,column=0, padx=10, pady=5)
ToolTip.CreateToolTip(loadbtn, 'Load the Settings.ini file')

供您参考:

import tkinter as tk
from tkinter import ttk
import ToolTip

def load():
    pass

root = tk.Tk()
loadbtn = tk.Button(root, text='Load', width=15, command=load)
loadbtn.grid(row=1,column=0, padx=10, pady=5)
ToolTip.CreateToolTip(loadbtn, 'Load the Settings.ini file')

root.mainloop()

工具提示的位置错误:enter image description here

良好的定位(内置)-也许可以使用???: enter image description here

0 个答案:

没有答案