button change

Fragen zu Tkinter.
Antworten
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

HI.
Ich würde gerne zwei Sachen in meiner GUI machen.
Als erstes würde ich gern, das ein Button ein Bild bekommt.
Das klappt auch schon einwandfrei.
Jetzt wäre es noch ideal, wenn sich das "Bild" auf dem Button ändert, wenn ich mit der Maus über dem Button bin.
Hab dazu aber leider noch nix gefunden.
Habt ihr da was für mich?
Danke
BlackJack

@The Spirit: Dafür kannst Du die '<Enter>'- und '<Leave>'-Ereignisse verwenden:

Code: Alles auswählen

import Tkinter as tk


def main():
    def on_enter(_event):
        print 'Mauszeiger hat Button betreten.'
    
    def on_leave(_event):
        print 'Mauszeiger hat Button verlassen.'
    
    root = tk.Tk()
    button = tk.Button(root, text='Test')
    button.bind('<Enter>', on_enter)
    button.bind('<Leave>', on_leave)
    button.pack()
    root.mainloop()


if __name__ == '__main__':
    main()
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

vielen dank.
das heist ich "zeichne" einfach den button jeweils neu wenn er "betreten" oder "verlassen" wird.
werd das heute abend gleich mal testen.

edit:
grad mal in der mittagspause damit rumprobiert.
aber wie kann ich die attribute von button damit ändern?
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

keiner noch eine idee?
BlackJack

@The Spirit: Zugriff über Schlüssel oder per `config()`-Methode:

Code: Alles auswählen

def main():
    def on_enter(event):
        print 'Mauszeiger hat Button betreten.'
        event.widget['text'] = 'Hallo'
    
    def on_leave(event):
        print 'Mauszeiger hat Button verlassen.'
        event.widget['text'] = 'Test'
    
    root = tk.Tk()
    button = tk.Button(root, text='Test')
    button.bind('<Enter>', on_enter)
    button.bind('<Leave>', on_leave)
    button.pack()
    root.mainloop()
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

viele vielen dank nochmal

nur ne kurze frage noch für mich zum verständnis.
wo passiert jetzt die verknüpfung zwischen dem button text und der variable in der funktion?
rein über den funktionsaufruf?
BlackJack

@The Spirit: Ich weiss nicht ob ich die Frage richtig verstehe!? ``event.widget`` ist in diesem Fall das `Button`-Exemplar. So eine Ereignisbehandlung wird ja immer mit einem Ereignis-Objekt aufgerufen und das kennt das Widget von dem das Ereignis kommt.

http://effbot.org/tkinterbook/tkinter-e ... ndings.htm
Antworten