Tkinter



Tkinter Buttons

Tk widgets Ein Button (in Deutsch auch als Schaltfläche bezeichnet) ist ein Steuerelement (Widget), das zur interaktiven Kommunikation mit dem Benutzer entworfen wurde. Wenn eine Schaltfläche (Button) mittels Mausklick gedrückt wird, führt dies meist zur Ausführung einer bestimmten Aktion.

Buttons können ebenso wie Labels Bilder und Text enthalten. Aber während Labels Text in verschiedenen Schriftarten (fonts) darstellen können, kann der Text eines Buttons nur in einer einzigen Schriftart dargestellt werden. Der Text eines Buttons kann sich jedoch über mehrere Zeilen erstrecken.

Mit einem Button kann eine Python-Funktion oder Methode assoziert werden. Diese Funktion oder Methode wird ausgeführt, sobald die Schaltfläche gedrückt wurde.

Beispiel für eine Button-Klasse

Das folgende Skript definiert zwei Buttons: Einer um die Anwendung zu verlassen (QUIT) und der andere mit dem Text "Hello" startet die Methode write_slogan, die dann den vielsagenden Text "Tkinter is easy to use" im Terminal ausgibt.

from Tkinter import *
class App:
  def __init__(self, master):
    frame = Frame(master)
    frame.pack()
    self.button = Button(frame, 
                         text="QUIT", fg="red",
                         command=frame.quit)
    self.button.pack(side=LEFT)
    self.slogan = Button(frame,
                         text="Hello",
                         command=self.write_slogan)
    self.slogan.pack(side=LEFT)
  def write_slogan(self):
    print "Tkinter is easy to use!"

root = Tk()
app = App(root)
root.mainloop()


Das Ergebnis des vorigen Beispielskripts sieht wie folgt aus:

Example Button class

Dynamischer Inhalt in einem Label

Das folgende Skript zeigt ein Beispiel, in dem der Inhalt eines Labels dynamisch um 1 erhöht wird:

import Tkinter as tk

counter = 0 
def counter_label(label):
  counter = 0
  def count():
    global counter
    counter += 1
    label.config(text=str(counter))
    label.after(1000, count)
  count()
 
 
root = tk.Tk()
root.title("Counting Seconds")
label = tk.Label(root, fg="dark green")
label.pack()
counter_label(label)
button = tk.Button(root, text='Stop', width=25, command=root.destroy)
button.pack()
root.mainloop()
Das Ergebnis des vorigen Skriptes sieht wie folgt aus:

dynamic label