Tkinter Tutorial - Schaltfläche

  1. Tkinter Button default Option
  2. Tkinter Button Command Callback

Das Tkinter Button Widget ist dem Tkinter Label Widget sehr ähnlich. Es hat fast die gleichen Optionen wie die im Label, außer dass es eine zusätzliche default Option hat. Wir werden Details zu diesem default nach einem einfachen Knopf-Beispiel geben.

Sie könnten zwei einfache Buttons mit Hilfe der untenstehenden Demo-Codes generieren.

Tkinter Button_Basic.py
from sys import version_info
if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk
    
app = tk.Tk()
button1 = tk.Button(app, text="Python Label 1")
button2 = tk.Button(app, text="Python Label 2")
button1.pack(side=tk.LEFT)
button2.pack(side=tk.LEFT)
app.mainloop()

Das Fenster mit zwei nebeneinander liegenden Schaltflächen zeigt sich, nachdem Sie die Codes ausgeführt haben.

Tkinter Tutorial_Grundbeschriftung

Tkinter Button default Option

Die default Option in button sagt, dass die Taste die Standardtaste in der GUI ist, z.B. die, die automatisch aufgerufen wird, wenn der Benutzer die Enter- oder Return-Taste drückt.

Tkinter Button Command Callback

Die Option command ruft die Callback-Funktion auf, wenn die Taste gedrückt wird.

Tkinter Button_command callback.py
from sys import version_info
if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk
    

    
app = tk.Tk()
labelExample = tk.Button(app, text="0")

def change_label_number():
    counter = int(str(labelExample['text']))
    counter += 1
    labelExample.config(text=str(counter))
    
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=change_label_number)

buttonExample.pack()
labelExample.pack()
app.mainloop()

Sie erzeugt einen Button und ein Label-Widget im Hauptfenster. Die Zahl im Labeltext wird bei jedem Klick auf den Button um 1 erhöht.

Tkinter Tutorial_Button Befehls-Callback

def change_label_number():
    counter = int(str(labelExample['text']))
    counter += 1
    labelExample.config(text=str(counter))

Die change_label_number ist die Funktion, die aufgerufen wird, wenn man auf die Schaltfläche klickt. Sie erhält die Nummer des Labels und setzt dann das Label um eins erhöht.

buttonExample = tk.Button(app, text="Increase", width=30,
                          command=change_label_number)

Sie baut die Bindung zwischen Button und seiner Callback-Funktion auf.

Tkinter Button Command Callback Funktion mit Argumenten

Sie benötigen ein partial Objekt von functools, wenn Sie Argumente an die Callback-Funktionen übergeben müssen. partial Objekte sind aufrufbare Objekte mit den positionalen Argumenten args und den Schlüsselwort-Argumenten keywords.

Der folgende Codeausschnitt demonstriert, wie man diese partial Funktion im Button-Kommando verwendet.

def change_label_number(num):
    counter = int(str(labelExample['text']))
    counter += num
    labelExample.config(text=str(counter))
    
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=partial(change_label_number, 2))