Seite 1 von 1
button change
Verfasst: Montag 14. März 2011, 08:25
von The Spirit
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
Re: button change
Verfasst: Montag 14. März 2011, 09:09
von 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()
Re: button change
Verfasst: Montag 14. März 2011, 11:36
von The Spirit
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?
Re: button change
Verfasst: Dienstag 15. März 2011, 08:04
von The Spirit
keiner noch eine idee?
Re: button change
Verfasst: Dienstag 15. März 2011, 10:59
von 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()
Re: button change
Verfasst: Dienstag 15. März 2011, 14:32
von The Spirit
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?
Re: button change
Verfasst: Dienstag 15. März 2011, 15:08
von 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