Python - Tooltip en tkinter

 
Vista:

Tooltip en tkinter

Publicado por Esteban Velazquez (2 intervenciones) el 01/04/2020 18:15:59
Hola muy buenas,
Pues nada, busco y rebusco y no encuentro ninguna opcion sencilla de implementar un tooltip en una barra de menu en tkinter. ¿Alquien tiene alguna idea de como hacerlo, con algun metodo o propiedad?
Estoy muy mal acostumbrado con el Visual Basic. Gracias por vuestras repuestas, un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Tooltip en tkinter

Publicado por tincopasan (1082 intervenciones) el 02/04/2020 01:11:08
Hola:
que sepa, tkinter no trae por defecto lo que buscas, salvo que agregues algunas extensiones como tix, ahora, se puede hacer una clase que cumpla lo que más o menos buscas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#-*- coding: utf -8 -*-
from tkinter import *
class CrearToolTip(object):
	"""
	Crear la ayuda para los objetos
	"""
 
	def __init__(self,elemento,texto='Info del objeto'):
		self.espera = 500
		self.largo = 180
		self.objeto = elemento
		self.texto = texto
		self.objeto.bind("<Enter>",self.entrar)
		self.objeto.bind("<Leave>",self.salir)
		self.objeto.bind("<ButtonPress>",self.salir)
		self.id = None
		self.tw = None
 
	def entrar(self,event=None):
		self.asignar()
 
	def salir(self,event=None):
		self.liberar()
		self.ocultar_tip()
 
	def  asignar(self):
		self.liberar()
		self.id = self.objeto.after(self.espera,self.mostrar_tip)
 
	def  liberar(self):
		id = self.id
		self.id = None
		if id:
			self.objeto.after_cancel(id)
 
	def  mostrar_tip(self,event=None ):
		x = y = 0
		x,y,cx,cy = self.objeto.bbox("insert")
		x += self.objeto.winfo_rootx() + 25
		y += self.objeto.winfo_rooty() + 20
		self.tw = Toplevel(self.objeto)
		self.tw.wm_overrideredirect(True)
		self.tw.wm_geometry("+%d+%d"%(x,y))
		label = Label(self.tw,text=self.texto,justify="left",
					             background = "white",relief="solid",borderwidth=1,
								 wraplength = self.largo)
		label.pack(ipadx=1)
 
 
	def ocultar_tip(self):
		tw = self.tw
		self.tw = None
		if tw:
			tw.destroy()
 
 
def main():
	root = Tk()
	root.geometry('300x200')
	Obj1 = Label(root,text="Red",bg="red",fg="white")
	obj2= Button(root,text="Boton")
	CrearToolTip(Obj1,"Esto es un label")
	CrearToolTip(obj2,"Esto es un botón")
	Obj1.pack(fill=X)
	obj2.pack(fill=X)
	mainloop()
 
 
if __name__=="__main__":
	main()

Te muestro un ejemplo y queda en vos adaptarlo, ya que nunca pusiste ni una línea de código.
por supuesto que la clase la pódes crear como un módulo y después importarla y llamarla simplemente, para que haya menos código visible.
Si estás acostumbrado a VB te recomiendo que no pierdas tiempo con tkinter, a menos que sea necesario o hagas aplicaciones simples, sino empezá con pyqt5 que si trae la propiedad tooltip(y muchas más por supuesto) y junto con qtdesigner crean un entorno más amigable para las aplicaciones.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tooltip en tkinter

Publicado por Esteban Velazquez (2 intervenciones) el 03/04/2020 13:28:10
Gracias por la respueta y los consejos. Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar