我想做一个简单的弹出消息,当鼠标进入图标时显示图标表示的选项的名称,当鼠标离开时隐藏。你知道吗
这些图标是按钮中的图像,我已经能够在使用菜单小部件输入按钮时显示消息,但是当鼠标离开按钮时,它不会取消粘贴,除非出现咔嚓声。你知道吗
我试着删除层叠,但同样的情况发生了,不同的是,他菜单在那一刻没有文本。你知道吗
我也尝试过.destroy()
菜单对象,但它什么也没做。你知道吗
from tkinter import *
from tkinter import ttk
from pyautogui import position
Raiz = Tk()
Raiz.title("Mi app")
Ancho = Raiz.winfo_screenwidth()
Alto = Raiz.winfo_screenheight()
Raiz.geometry("{}x{}".format(Ancho, Alto))
Raiz.config(bg="#F4F4F4")
def Despliega(Texto):
global MenuDesplegable
MenuDesplegable = Menu(master=None, tearoff=0, activebackground='#F0F0F0')
MenuDesplegable.add_cascade(label=Texto)
MenuDesplegable.post(position().x, position().y)
def Repliega():
global MenuDesplegable
#MenuDesplegable.delete(0) -- dosen't work
#MenuDesplegable.unpost() -- dosen't work
#MenuDesplegable.destroy() -- dosen't work
Raiz.columnconfigure(0, weight=1)
BarraMenu = Frame(Raiz, bg="light grey", height=50, width="{}".format(Ancho),
bd="4", relief="groove")
BarraMenu.grid(row=0, column=0, sticky="nsew")
I_Abrir = PhotoImage(file="Abrir.png")
B_Abrir = Button(BarraMenu, bg="light grey", image=I_Abrir, bd=0)
B_Abrir.grid(row=0, column=0, padx=10)
B_Abrir.bind('<Enter>', lambda event: Despliega('Abrir'))
B_Abrir.bind('<Leave>', lambda event: Repliega())
I_Nuevo = PhotoImage(file="Nuevo.png")
B_Nuevo = Button(BarraMenu, bg="light grey", image=I_Nuevo, bd=0)
B_Nuevo.grid(row=0, column=1, padx=10)
B_Nuevo.bind('<Enter>', lambda event: Despliega('Nuevo'))
B_Nuevo.bind('<Leave>', lambda event: Repliega())
Raiz.mainloop()
如果有人能理解为什么它不能像我描述的那样工作,那就太好了。 另外,如果有人知道一种方式来显示消息有点延迟,请给我看。你知道吗
您可以创建一个类,将小部件和消息作为参数,然后应用于任何需要该信息的小部件。你知道吗
通常Windows不识别unpost命令(有关详细信息:https://www.tcl.tk/man/tcl8.6/TkCmd/menu.htm#M45&;https://wiki.tcl-lang.org/page/How+do+you+unpost+a+menu)
我提出的解决方案如下:
这两个方法在coursor进入其中一个按钮时将
Tkinter.Label
放置在鼠标位置,并在释放该按钮时将其解除锁定。你知道吗它工作得很好,但当鼠标放在标签上时,它很少做事情。你知道吗
相关问题 更多 >
编程相关推荐