So und erneut eine Frage^^ ich hab in meinem Schlauen Pythonbuch wieder nichts gefunden.
Ich würde gerne Buttons erstellen, die bei Mouse-Over einen Tooltipp anzeigen. Der Tooltipp sollte wenn möglich direkt angezeigt werden und auch ohne Verzögerung wieder verschwinden.
mfg nightm4r3
Tooltipps
-
- User
- Beiträge: 83
- Registriert: Montag 11. Februar 2008, 15:43
- Kontaktdaten:
wenn man das Tkinterforum etwas verfolgt, kommt man schnell zum Erfolg
http://www.python-forum.de/topic-18687.html

http://www.python-forum.de/topic-18687.html
-
- User
- Beiträge: 83
- Registriert: Montag 11. Februar 2008, 15:43
- Kontaktdaten:
Also erst mal Danke euch beiden,
allerdings gibt es laut Python keinen Befehl ToolTip()
Habt ihr es mal Probiert ob es den Befehl noch gibt? Kann ja sein dass ich da auch was falsch mache
EDIT: Okay sry mein Fehler. Ich dachte ToolTip() wäre ein Pythonmodul. Hab allerdings herausgefunden dass man sich erst eine Klasse Tooltip erstellen musst.
allerdings gibt es laut Python keinen Befehl ToolTip()
steht ja auch auf der Seite.which unfortunately seems to be broken
Habt ihr es mal Probiert ob es den Befehl noch gibt? Kann ja sein dass ich da auch was falsch mache
EDIT: Okay sry mein Fehler. Ich dachte ToolTip() wäre ein Pythonmodul. Hab allerdings herausgefunden dass man sich erst eine Klasse Tooltip erstellen musst.
-
- User
- Beiträge: 83
- Registriert: Montag 11. Februar 2008, 15:43
- Kontaktdaten:
So eigentlich müsste jetzt alles funktionieren^^
ich bin mal so frei und post den Quellcode
Das ist der Code von der Seite die HWK gepostet hat.
Jetzt muss ich dich in meinem Quellcode genauso wie der Typ von der Seite
oder hab ich das was falsch verstanden
ich bin mal so frei und post den Quellcode
Code: Alles auswählen
import Tkinter
class ToolTip:
def __init__(self, master, text='Your text here', delay=1500, **opts):
self.master = master
self._opts = {'anchor':'center', 'bd':1, 'bg':'lightyellow', 'delay':delay, 'fg':'black',\
'follow_mouse':0, 'font':None, 'justify':'left', 'padx':4, 'pady':2,\
'relief':'solid', 'state':'normal', 'text':text, 'textvariable':None,\
'width':0, 'wraplength':150}
self.configure(**opts)
self._tipwindow = None
self._id = None
self._id1 = self.master.bind("<Enter>", self.enter, '+')
self._id2 = self.master.bind("<Leave>", self.leave, '+')
self._id3 = self.master.bind("<ButtonPress>", self.leave, '+')
self._follow_mouse = 0
if self._opts['follow_mouse']:
self._id4 = self.master.bind("<Motion>", self.motion, '+')
self._follow_mouse = 1
def configure(self, **opts):
for key in opts:
if self._opts.has_key(key):
elf._opts[key] = opts[key]
else:
KeyError = 'KeyError: Unknown option: "%s"' %key
raise KeyError
##----these methods handle the callbacks on "<Enter>", "<Leave>" and "<Motion>"---------------##
##----events on the parent widget; override them if you want to change the widget's behavior--##
def enter(self, event=None):
self._schedule()
def leave(self, event=None):
self._unschedule()
self._hide()
def motion(self, event=None):
if self._tipwindow and self._follow_mouse:
x, y = self.coords()
self._tipwindow.wm_geometry("+%d+%d" % (x, y))
##------the methods that do the work:---------------------------------------------------------##
def _schedule(self):
self._unschedule()
if self._opts['state'] == 'disabled':
return
self._id = self.master.after(self._opts['delay'], self._show)
def _unschedule(self):
id = self._id
self._id = None
if id:
self.master.after_cancel(id)
def _show(self):
if self._opts['state'] == 'disabled':
self._unschedule()
return
if not self._tipwindow:
self._tipwindow = tw = Tkinter.Toplevel(self.master)
# hide the window until we know the geometry
tw.withdraw()
tw.wm_overrideredirect(1)
if tw.tk.call("tk", "windowingsystem") == 'aqua':
tw.tk.call("::tk::unsupported::MacWindowStyle", "style", tw._w, "help", "none")
self.create_contents()
tw.update_idletasks()
x, y = self.coords()
tw.wm_geometry("+%d+%d" % (x, y))
tw.deiconify()
def _hide(self):
tw = self._tipwindow
self._tipwindow = None
if tw:
tw.destroy()
##----these methods might be overridden in derived classes:----------------------------------##
def coords(self):
# The tip window must be completely outside the master widget;
# otherwise when the mouse enters the tip window we get
# a leave event and it disappears, and then we get an enter
# event and it reappears, and so on forever :-(
# or we take care that the mouse pointer is always outside the tipwindow :-)
tw = self._tipwindow
twx, twy = tw.winfo_reqwidth(), tw.winfo_reqheight()
w, h = tw.winfo_screenwidth(), tw.winfo_screenheight()
# calculate the y coordinate:
if self._follow_mouse:
y = tw.winfo_pointery() + 20
# make sure the tipwindow is never outside the screen:
if y + twy > h:
y = y - twy - 30
else:
y = self.master.winfo_rooty() + self.master.winfo_height() + 3
if y + twy > h:
y = self.master.winfo_rooty() - twy - 3
# we can use the same x coord in both cases:
x = tw.winfo_pointerx() - twx / 2
if x < 0:
x = 0
elif x + twx > w:
x = w - twx
return x, y
def create_contents(self):
opts = self._opts.copy()
for opt in ('delay', 'follow_mouse', 'state'):
del opts[opt]
label = Tkinter.Label(self._tipwindow, **opts)
label.pack()
Das ist der Code von der Seite die HWK gepostet hat.
Jetzt muss ich dich in meinem Quellcode genauso wie der Typ von der Seite
Code: Alles auswählen
t1 = ToolTip(l, follow_mouse=1, text="test")
Äääähhh? Kannst du das mal für Menschen wie mich übersetzen?nightm4r3^ hat geschrieben:Jetzt muss ich dich in meinem Quellcode genauso wie der Typ von der Seite
Im übrigen: Längere Quelltexte bitte auslagern, weil das die Board-Software stark bremst, ggf. auch ganz blockiert und man nicht mehr antworten kann.
Hallo nightm4r3^
....... Hier nochmals dein Code-Snippet, aber als ausführbares Beispiel:
http://paste.pocoo.org/show/119717/
Gruss wuf
....... Hier nochmals dein Code-Snippet, aber als ausführbares Beispiel:
http://paste.pocoo.org/show/119717/
Ich spreche zwar deutsch aber diesen Satz verstehe ich nicht!?nightm4r3^ hat geschrieben:Jetzt muss ich dich in meinem Quellcode genauso wie der Typ von der Seite
Gruss wuf

Take it easy Mates!
-
- User
- Beiträge: 83
- Registriert: Montag 11. Februar 2008, 15:43
- Kontaktdaten:
Ja irgendwie leidet meine Deutsche Sprache stark seit ich in Foren verkehre =D
ich meinte:
Jetzt muss ich doch in meinem Quellcode genauso wie der Typ von der SeiteeinfügenCode: Alles auswählen
t1 = ToolTip(l, follow_mouse=1, text="test")
-
- User
- Beiträge: 83
- Registriert: Montag 11. Februar 2008, 15:43
- Kontaktdaten:
Sorry erstmal für Doppelpost.
Ich hatte nur einen kleinen Fehler in der Tooltip Klasse.
Trotzdem würde ich jetzt gern wissen, wie ich anstatt des Tooltips ein Bild einfügen kann als Hinterdrung. Geht es einfach so ein Bild zu importieren
und dann als Hintergrund in den Tooltip einzufügen
Ich hatte nur einen kleinen Fehler in der Tooltip Klasse.
Trotzdem würde ich jetzt gern wissen, wie ich anstatt des Tooltips ein Bild einfügen kann als Hinterdrung. Geht es einfach so ein Bild zu importieren
Code: Alles auswählen
tooltipbg=PhotoImage(file='hintergrundtooltip.gif')
Code: Alles auswählen
t1 = ToolTip(classwl, text="test", bg=tooltipbg)
Hallo nightm4r3^
Hier dein Code-Snippet mit Bildchen im Tooltip:
http://paste.pocoo.org/show/120753/
Gruss wuf
Hier dein Code-Snippet mit Bildchen im Tooltip:
http://paste.pocoo.org/show/120753/
Gruss wuf

Take it easy Mates!
-
- User
- Beiträge: 83
- Registriert: Montag 11. Februar 2008, 15:43
- Kontaktdaten:
Ah gut danke Wuf.
Trotzdem ist das jetzt nicht das Bild als Hintergrund. Im Moment sieht man das importierte Bild und daneben steht der Text vom Tooltip.
1) kann ich das auch in den Hintergrund von dem Text verschieben?
2) kann ich auch die größe verändern. Also des Bildes?
tut mir leid für soviele Frage
Trotzdem ist das jetzt nicht das Bild als Hintergrund. Im Moment sieht man das importierte Bild und daneben steht der Text vom Tooltip.
1) kann ich das auch in den Hintergrund von dem Text verschieben?
2) kann ich auch die größe verändern. Also des Bildes?
tut mir leid für soviele Frage
Hallo nightm4r3^
Jetzt ist das Bild im Tooltip hinter dem Text:
http://paste.pocoo.org/show/121130/
Die Grösse des Bildes hängt vom verwendeten Bild ab.
Vergrössern eines Bildes geht mit dem PIL-Packet. Vergösserung von Bildern im gif-Format würde ich nicht durchführen da diese danach schlecht aussehen.
Gruss wuf
Jetzt ist das Bild im Tooltip hinter dem Text:
http://paste.pocoo.org/show/121130/
Die Grösse des Bildes hängt vom verwendeten Bild ab.
Vergrössern eines Bildes geht mit dem PIL-Packet. Vergösserung von Bildern im gif-Format würde ich nicht durchführen da diese danach schlecht aussehen.
Gruss wuf

Take it easy Mates!