TkInter Material Grundlagen Templates Ereignisse Button Entry Label Canvas Welt-Bild-Transformation Text Dialoge Optionmenu Listbox Fenster Toplevel Timer Threads Pack Drag&Drop
Pfad: Startseite / Fächer / Informatik / Python / TkInter
Autor: mk
31.10.2009 15:14:09
2772

Beispiel 1

In Python 3.1 heißt das Tkintermodul 'tkinter'. In diesem Fall also 'from tkinter import *' eingeben!

GUI 0 gui1.pyw

Beispiel 2

GUI 1 gui2.pyw

Beispiel 3

GUI 2 gui3.pyw

Beispiel 4

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()

Beispiel 5

Beispiel 5

Beispiel 6

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()

Links

Valid XHTML 1.0!