python-3.x - 为什么后台会出现ToolTip
问题描述
我搜索 tkinter 应用程序的工具提示。现在我在 youtube 上找到了一个例子。但是这个ToolTip出现在后台,没什么用。我怎样才能将它始终放在我的应用程序前面,以便用户意识到它?
查看我的图片:工具提示文本出现在我的应用程序窗口后面。如何将它移到我的应用程序前面?
杰克·舒茨曼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()
工具提示定位错误:在此处输入图像描述
良好的定位(内置)-也许可以使用???: 在此处输入图像描述
解决方案
推荐阅读
- google-app-engine - 将应用程序流量从我的服务器重定向到托管在 Google App Engine 中的 API
- java - 即使设置了新路径,Java 版本也不会更新
- excel - 通过附加额外的零来更正 Excel 中的 HEX 值
- android-studio - 为什么下面的进度条没有显示?
- spotify - 艺术家个人资料信息未从 spotify api 获取
- java - 如何重置 Java.exe 进程的端口
- javascript - Semantic-UI/ReactJS Dropdown 组件转换不起作用
- windows - 无法在 Windows 10 中清理最近使用过的项目
- sql - 语句不匹配结果时的 SQL 案例
- facebook - Swift 5,iOS 13.3.1 FBSDKCoreKit 错误(派生数据删除没有帮助)