Seite 1 von 1

Tkinter und Hints

Verfasst: Sonntag 2. Mai 2004, 17:16
von DER Olf
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

Verfasst: Sonntag 2. Mai 2004, 18:48
von Dookie
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