Hallo an alle,
ich wollte mal wissen, ob es möglich ist, sich Text anzeigen zu lassen, wenn man mit der Maus über ein bestimmtes Objekt in einem Fenster fährt.
Also quasi, wenn man mit der Maus über einem Button/Textfeld etc. drüber fährt (ohne klicken) dass dann so eine Art Tooltip erscheint, mit einem Hinweis, was man machen soll.
Beispielsweise hat der Benutzer die Maus über ein Entry-Feld und dort soll dann neben dem Mauszeiger z.B. erscheinen was er eintragen soll.
Geht sowas überhaupt?
Danke schonmal für eure Hilfe
Daniela
Tooltipanzeige per Mouseover
-
- User
- Beiträge: 128
- Registriert: Freitag 22. Oktober 2004, 09:22
- Wohnort: Salzgitter
- Kontaktdaten:
Ein Blick ins Manual hat gezeigt, dass es wahrscheinlich nicht geht, hätte mich auch gewundert. Ein noch halbwegs annehmbarer Workaround könnte aber ein Label darstellen, welches für sämtliche vorhandene Eingabefelder etc. Tooltipps anzeigt, sobald die entsprechenden Widgets den Focus erhalten..
I am not part of the allesburner. I am the [url=http://allesburner.de]allesburner[/url].
Hallo Daniela
Hier eine mögliche Variante:
Gruss wuf
Hier eine mögliche Variante:
Code: Alles auswählen
# Skriptname: tk_tool_tip_01.py
import Tkinter as tk
class MyToolTip(tk.Toplevel):
TIP_X_OFFSET = 8
TIP_Y_OFFSET = 8
AUTO_CLEAR_TIME = 1000 # Millisek. (1 sek.)
TIP_SYMBOL = """
R0lGODlhIAAgAOMMAAgICABSAABjMXtjOf9jAGOcYwDOY/+cMf/GQs7OnP//
Y///pf///////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAA8A
LAAAAAAgACAAAAT+8MlJq704630PQpaHeBxFPqO5TGl5rMjyHRItLzLNvfI3
k73fDIQBBT8EoC9JfMiKsZgoqfB4CEacQtGaiA5fMBV8wDp9Pl1thRqRCcn3
gQt2z1iPLVoMH5ThCHFkfDV5aXBwZQMJAwCIj3wDeDOJiJKMjYKPBAOSk3A4
SUmLnY6JYp2eFWUxC6KoAKaIb6oVHzhXfHOQcX1FZyMjiQqzp4oFyAW2wG5w
Cgtl0VacAtUCBsgUBM/NSYaBP9TIBgbWARMDm51zzyu44tUF1+UB5xKpnQ/p
HlxInPUBBMgrV82APQzp1A0weC5gQYIHEeLzRK7eA4fVLJa4UFECwIgbGy1g
AxlSg8GSG0eiLHFy5QaVLjVojEmzZoUIADs=
"""
def __init__(self, xpos, ypos, message="my tooltip", auto_clear=False):
self.xpos = xpos
self.ypos = ypos
self.message = message
self.auto_clear = auto_clear
tk.Toplevel.__init__(self)
self.overrideredirect(True)
self.tip_symbol = tk.PhotoImage(data=self.TIP_SYMBOL)
self.message_label = tk.Label(self, compound='left', text=self.message,
image=self.tip_symbol, bg='palegoldenrod', fg='blue')
self.message_label.pack()
self.geometry("+%d+%d" % (self.xpos+self.TIP_X_OFFSET,
self.ypos+self.TIP_X_OFFSET))
if self.auto_clear:
self.after(self.AUTO_CLEAR_TIME, self.clear_tip)
def clear_tip(self):
"""Entferne den Tool-Tip"""
self.destroy()
def entry_mouse_enter(event):
"""Die Maus bewegt sich ins Entry-Widget"""
print 'Enter', event.x_root, event.y_root
app_win.my_tool_tip = MyToolTip(event.x_root, event.y_root,
"Hallo Daniela!!!")
def entry_mouse_leave(event):
"""Die Maus bewegt sich aus dem Entry-Widget"""
#~~ Entferne den Tool-Tip
app_win.my_tool_tip.destroy()
app_win = tk.Tk()
app_win.title("Tool-Tip")
app_win.geometry("%dx%d+%d+%d" % (200,50,20,20))
my_entry = tk.Entry(app_win, highlightthickness=0, width=20, bg='white',
cursor='pencil')
my_entry.place(x=10, y=10)
my_entry.bind('<Enter>', entry_mouse_enter)
my_entry.bind('<Leave>', entry_mouse_leave)
app_win.mainloop()
Take it easy Mates!
Die Verwunderung verstehe ich nicht. Natürlich geht das, und zwar mit Hilfe eines rahmenlosen Toplevel-Widgets. Passenden Code hat wuf ja gleich geliefert ...Redprince hat geschrieben:Ein Blick ins Manual hat gezeigt, dass es wahrscheinlich nicht geht, hätte mich auch gewundert.
-
- User
- Beiträge: 128
- Registriert: Freitag 22. Oktober 2004, 09:22
- Wohnort: Salzgitter
- Kontaktdaten:
Ich hatte nicht dran gedacht, dass man den Rahmen bei Widgets entsorgen kann. Hatte natürlich an ein Toplevel-Widget gedacht, aber es für eine schlechte Idee gehalten wegen des Rahmes. Deshalb der Workaround
I am not part of the allesburner. I am the [url=http://allesburner.de]allesburner[/url].
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
Kleine Frage:
Im oben beschriebenen Beispiel ist ein Bild aus Buchstaben.
Ich hab so was schon öfters gesehen aber Ich weis nicht wie man so was erzeugt.
Gibs da vieleicht ne Seite oder ein Programm wo man so was machen kann?
Im oben beschriebenen Beispiel ist ein Bild aus Buchstaben.
Ich hab so was schon öfters gesehen aber Ich weis nicht wie man so was erzeugt.
Gibs da vieleicht ne Seite oder ein Programm wo man so was machen kann?
@krisi12345: Das sind einfach die Binärdaten aus einer GIF-Datei als Base64 kodiert. Da braucht man nicht unbedingt ein extra Programm, dass kann auch einfach in der Python-Shell mal schnell umwandeln. Beispiel:
Die Daten kann man dann per Kopieren und Einfügen in den Quelltext übertragen.
Code: Alles auswählen
In [379]: f = open('Hopsy.gif', 'rb')
In [380]: print f.read().encode('base64')
R0lGODlhJAAkAPYAAAAAAAM9DARMDwRQDwRSEAVkEwZtEwZyFQd7FgeBFweFGAqFGQqNGgiVGwqa
HBGEHRGKHhCUHg+cIBmNIxWQIRGdIBuTJRqZJQmjHQmqHgqwHw2tIQq0IAq5IRSiIxmmJh2mKRuo
Jx2rKSKTKSaYKyicLiKiKyKuLCmiLyqtMSSxLiC9Lia1MCm0MSu5MzKrNTesODOyNjG+Nzu1Ozy/
PQvEIgvNIwzUJQzbJhbHKRHVKBPZKg3hJw3lKA3rKBLjKhjkLiTXMzDDNzXCOTjFPDvIPiXlNSPp
NSvtOj3LQD3WQUHPQ03JSEXSRUrUSE3aSlTTTlHdTVPgT1XiUFXoUVzlVFzqVVL/VGDoV2HuWGjs
XGXyW2H/XGj2XW38YnP+ZXv/a4D/boX/cor/dY7/eZL/fp3/gqz/jbP/k7r/l7//ms3/pdb/q97/
sszMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5
BAEAAG4AIf4VQ3JlYXRlZCB3aXRoIFRoZSBHSU1QACwAAAAAJAAkAAAH/oBugoOEgjc3NomKijWF
jo+ENz49kzg4h4c2NRwYHJCfbjo+oz4/V15PQywiHg4ZGhwdGBmghaQ/ZWliXlNNQy4nHx4VFQ6u
Gg61bkejPGVsZ2ZiX1ZPRTInIK3GDQ0OGN6fpEBta2nRY19RNC4p2R7bDt3eGAmQlEhramloZ2FQ
M0pMmGDBwgQIECgYkzdPwaNJRs5IjKYFxogRJEqkSAHiwoIFDBh4m9etgC0fO8qoPDOGSQkSM6po
kbJEFasQESCIJNnNAKEeOK58ASOmS8AXWMJ86SLF16oQHiJEaLCTpD1BPW4EoWKlC5YXJGBsCQOG
WhSnIj4UYwiBZwMB/lhvKGnyBEqKETCwfFm6pYo1ISpYRV3otoE9HjdyDBmSJMYEFE2ydOmSxcpZ
Ii5UQCVcuFsAxDlYuGhRMIYTKVOqSDlbRNUJqGsZFi6ASISIExcemCBSpIlv39dkBFbLeZ7sBghs
dPDw4YMFCiZcyBhCpPoQGZnTfohgbCpJDMdrbICXM8KJEyxatHAxWsUJEdq2cecJnqQsBxUiPIjw
IUSI8wC+15xUxRkHzjwdrIVQBMN44N+DUA1D2HHz1NeNBgdKxV0rrYTggIMVDObAfG65IhuG3TgA
AXfdxRNBMSx21sAsBzaAojwhebPQjtxw09ksDCmAgYU58ihPfRS6jpVBjQfMKJtU80yVpIw0zgNX
jSPJqKU3GWTAEAOCZLnllsfU6JMgU45JnwZezkMIAxRiOSYGbMp2QCFuDanmN2zW6JAjhYEnp4Ea
1NkQJE3mOeSi3wz5CookmQRJAVVVuGiXhRba5jwMSAqKAjI2aiFJfyrjhgGVqnmmqYOgquadrD4i
gAEJuKWAAQMoEwgAOw==
In [381]: f.close()
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
Bei mir kommt nur ein syntax error!
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
Und wuf könntest du mal den Teil des Codes posten der dafür sorgt das das Bild über dem Fenster erscheint.
Ich kapier einfach nicht wo der ist!
Ich kapier einfach nicht wo der ist!
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Weil du das logischerweise als String einfuegen musst und nicht "einfach so". Einfach so wird nur Python-Code verstanden, und der sieht ja nun doch etwas anders aus als Base64-Daten.krisi12345 hat geschrieben:Bei mir kommt nur ein syntax error!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hallo krisi12345
Ich benutze hierfür folgenden BASE-64-Converter:
http://homework.nwsnet.de/products/5d28 ... -converter
Installiere den Converter am besten in einem neuen Verzeichnis. Kopiere eine Symbol-Datei mit der .gif-Endung die du in das BASE64-Format umwandeln möchtest ins gleiche Verzeichnis. Starte den Converter. Lade die gif-Datei als 'Input'. Für den 'Output' benutze ein neuer Name vielleicht mit der Endung .b64. Selektiere den Radiobutton 'Encode'. Aktiviere anschliessend die Schaltfläche 'Convert'. Nun sollte automatisch eine Datei mit dem BASE64-Formatierten String im gleichen Verzeichnis erstellt worden sein. Öffne diese Datei mit deinem Editor und kopiere den String wie ich es in meinem Code-Schnippsel gezeigt habe in dein Skript.
Gruss wuf
Ich benutze hierfür folgenden BASE-64-Converter:
http://homework.nwsnet.de/products/5d28 ... -converter
Installiere den Converter am besten in einem neuen Verzeichnis. Kopiere eine Symbol-Datei mit der .gif-Endung die du in das BASE64-Format umwandeln möchtest ins gleiche Verzeichnis. Starte den Converter. Lade die gif-Datei als 'Input'. Für den 'Output' benutze ein neuer Name vielleicht mit der Endung .b64. Selektiere den Radiobutton 'Encode'. Aktiviere anschliessend die Schaltfläche 'Convert'. Nun sollte automatisch eine Datei mit dem BASE64-Formatierten String im gleichen Verzeichnis erstellt worden sein. Öffne diese Datei mit deinem Editor und kopiere den String wie ich es in meinem Code-Schnippsel gezeigt habe in dein Skript.
Gruss wuf
Take it easy Mates!
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
HI!
Der Konverter sieht nicht schlecht aus aber wenn Ich ihn kopiere oder sogar downloade kommt ein fehler in der 162ten und 152ten Zeile.
Der Konverter sieht nicht schlecht aus aber wenn Ich ihn kopiere oder sogar downloade kommt ein fehler in der 162ten und 152ten Zeile.
...... Könntest du die ganze Fehlermeldung hier posten damit man herausfinden kann was das Problem ist. Bei mir funktioniert der Converter einwandfrei. Unter welchem Betriebsytem und Python-Version arbeitest du?
Gruss wuf
Gruss wuf
Take it easy Mates!
Hallo zusammen,
mit der Tkinter Ergänzung "Pmw" geht das ziemlich einfach mit den Tooltips/Balloons!
http://pmw.sourceforge.net/
siehe z.B. hier:
http://pmw.sourceforge.net/doc/Balloon.html
Und "Pmw" enthält noch so einige andere Nützliche Erweiterungen, die in Tkinter fehlen. Ein Blick lohnt sich.
Gruß
Stefan
mit der Tkinter Ergänzung "Pmw" geht das ziemlich einfach mit den Tooltips/Balloons!
http://pmw.sourceforge.net/
siehe z.B. hier:
http://pmw.sourceforge.net/doc/Balloon.html
Und "Pmw" enthält noch so einige andere Nützliche Erweiterungen, die in Tkinter fehlen. Ein Blick lohnt sich.
Gruß
Stefan
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
OK!
Fehler:
Usage: base64fileconverter.py [options]
base64fileconverter.py: error: Please specify an input filename.
Traceback (most recent call last):
File "C:\Users\Kristian\Desktop\Base64 Konverter\base64fileconverter.py", line 162, in <module>
main()
File "C:\Users\Kristian\Desktop\Base64 Konverter\base64fileconverter.py", line 152, in main
parser.error('Please specify an input filename.')
File "C:\Python26\lib\optparse.py", line 1565, in error
self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg))
File "C:\Python26\lib\optparse.py", line 1555, in exit
sys.exit(status)
SystemExit: 2
Und mein Python.
V. 2.6.1 und mit der 2.5 hab Ich es auch probiert.
Fehler:
Usage: base64fileconverter.py [options]
base64fileconverter.py: error: Please specify an input filename.
Traceback (most recent call last):
File "C:\Users\Kristian\Desktop\Base64 Konverter\base64fileconverter.py", line 162, in <module>
main()
File "C:\Users\Kristian\Desktop\Base64 Konverter\base64fileconverter.py", line 152, in main
parser.error('Please specify an input filename.')
File "C:\Python26\lib\optparse.py", line 1565, in error
self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg))
File "C:\Python26\lib\optparse.py", line 1555, in exit
sys.exit(status)
SystemExit: 2
Und mein Python.
V. 2.6.1 und mit der 2.5 hab Ich es auch probiert.
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
Ich hab doch schon gesagt das Ich es auch mit dem Original download der .py datei probiert hab.
Wie? Mein Gott lass Dir doch nicht alles aus der Nase ziehen. Was genau hast Du gemacht um die Ausgabe da oben zu erhalten?
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
Ja nix!
Ich hab gedownloaded und gestartet sonst nix.
Ich hab gedownloaded und gestartet sonst nix.