Tkinter und Hints

Fragen zu Tkinter.
Antworten
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

hi.

ihr kennt doch sicher diese kleinen beigen kästchen mit einem erklärendem text, die neben der maus erscheinen, wenn man über eine bestimmte stelllt in der GUI mit der Maus fährt.

in der VCL bei Delphi heißt es Hint, und wie bei Tkinter?
oder gibts das gar nicht??

mfg

Olf
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi DER Olf,

dafür brauchst Du Pmw (Python Mega Widgets).
Hier mal ein 2-Teiliges Beispiel:

tkbeispielGUI.py

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from Tkinter import *
import Pmw

noop = lambda *args: None #dummyfunktion

class MyGUI(object):
    def __init__(self, handlers):
        self.handlers = handlers
        self._buildgui()

    def _buildgui(self):
        self.root = Tk()
        Pmw.initialise(self.root)
        self.statusvar = StringVar(self.root)
        self.statusvar.trace_variable("w", self.handlers.get("handle_status", noop))
        self.button1 = Button(self.root, text=" 1 ", command=self.handlers.get("handle_button1",noop))
        self.button1.pack()

        # Hint fuer Button1
        self.hint1 = Pmw.Balloon(self.button1)
        self.hint1.bind(self.button1, "Button 1")

        self.button2 = Button(self.root, text=" 2 ", command=self.handlers.get("handle_button2",noop))
        self.button2.pack()

        # Hint fuer Button2
        self.hint2 = Pmw.Balloon(self.button2)
        self.hint2.bind(self.button2, "Button2")

        self.entry = Entry(self.root, width=20, textvariable=self.statusvar)
        self.entry.pack()

    def mainloop(self):
        self.root.mainloop()
tkbeispiel.py

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from tkbeispielGUI import *

def do_button1():
    myGUI.statusvar.set("Button 1 angeklickt")
    print "Button 1"

def do_button2():
    myGUI.statusvar.set("Button 2 angeklickt")
    print "Button 2"

def do_status(*args):
    print "Neuer Status = %s" % myGUI.statusvar.get()
    
handler_dict = {
    "handle_button1" : do_button1,
    "handle_button2" : do_button2,
    "handle_status"  : do_status
}

myGUI = MyGUI(handler_dict)
myGUI.mainloop()

Gruß

Dookie
Antworten