HSG |
|
Achtung: In Python 3.1 heißt das Tkinter-Model 'tkinter', dh. 'from tkinter import *' verwenden!
Im Beispiel 3 wurde über die Zuweisung command = add im Konstruktor des Buttons die Ereignisbehandlung angebunden. Das ist einfach, lässt aber keine verfeinerte Reaktionen zu. So will man z.B. auf das Loslassen des Buttons reagieren. Das ist über die Event-Verarbeitung von Python möglich. Im folgenden Quelltext sind die notwendigen Änderungen rot hervorgehoben.
def add(event): # Eingabe a = eval(eA.get()) b = eval(eB.get()) # Verarbeitung s = a+b # Ausgabe lS.config(text=str(s)) # GUI from Tkinter import * f = Tk() f.title('Addition') f.geometry('170x140') # Fenstergröße eA = Entry(master=f) eA.insert(0,'2.3') # fügt ab der Stelle 0 ein eA.place(x=20,y=20,width=50) # absolute Koordinaten eB = Entry(master=f) eB.insert(0,'-4.5') eB.place(x=100,y=20,width=50) bAdd = Button(master=f,text='addiere') # command = add entfällt bAdd.place(x=20,y=60, width=50) bAdd.bind('<ButtonRelease>',add) lS = Label(master=f,text='??') lS.place(x=20,y=100) f.mainloop()
Was ist in Beispiel 6 besser gelöst als in Beispiel 5?
def ein(event): cBild.itemconfig(o,fill='yellow') def aus(event): cBild.itemconfig(o,fill='black') # GUI from Tkinter import * f = Tk() f.title('Taster') f.geometry('160x80') cBild = Canvas(master=f,width=160,height=80) cBild.pack() o = cBild.create_oval('100','25','130','55',fill='black') bAdd = Button(master=f,text='Taster') bAdd.place(x=20,y=30, width=50) bAdd.bind('<Button-1>',ein) bAdd.bind('<ButtonRelease>',aus) f.mainloop()