Das Tkinter-Button-Widget
Tkinter ist eine Standard-Bibliothek für die GUI-Programmierung in Python.
Das Button-Widget ist ein Standard-Tkinter-Widget, das zur Implementierung verschiedener Arten von Buttons verwendet wird. Buttons können Text oder Bilder enthalten und Sie können jedem Button eine Python-Funktion oder -Methode zuordnen. Wenn der Button gedrückt wird, ruft Tkinter automatisch diese Funktion oder Methode auf.
Der Button kann Text nur in einer einzigen Schriftart anzeigen, der Text kann jedoch mehr als eine Zeile umfassen. Außerdem kann eines der Zeichen unterstrichen werden, um beispielsweise eine Tastenkombination zu markieren. Wenn ein Button erstellt wurde, muss er mit .pack() auf die Fläche „gepackt“ werden
Um ein einfaches Fenster mit einem Button zu erstellen, werde ich ein Beispiel in Python mit dem Tkinter-Modul geben.
import tkinter as tk
def button_click():
label.config(text="Button wurde geklickt!")
# Erstelle das Hauptfenster
root = tk.Tk()
root.title("Beispiel Fenster mit Button")
# Erstelle einen Button und füge ihn zum Fenster hinzu
button = tk.Button(root, text="Klick mich!", command=button_click)
button.pack(pady=20)
# Erstelle ein Label, um die Nachricht nach dem Klicken anzuzeigen
label = tk.Label(root, text="")
label.pack()
# Starte die GUI-Schleife
root.mainloop()
Hier ist, was der Code macht:
import tkinter as tk
: Importiert das Tkinter-Modul unter dem Aliastk
.def button_click()
: Eine Funktion, die aufgerufen wird, wenn der Button geklickt wird. In diesem Fall wird sie verwendet, um den Text des Labels zu ändern.root = tk.Tk()
: Erstellt das Hauptfenster.root.title("Beispiel Fenster mit Button")
: Setzt den Fenstertitel.button = tk.Button(root, text="Klick mich!", command=button_click)
: Erstellt einen Button mit dem Text „Klick mich!“ und der Funktionbutton_click
als die Funktion, die aufgerufen wird, wenn der Button geklickt wird.button.pack(pady=20)
: Fügt den Button zum Fenster hinzu und platziert ihn. Daspady=20
fügt 20 Pixel Abstand unter dem Button hinzu.label = tk.Label(root, text="")
: Erstellt ein Label, das anfangs leer ist.label.pack()
: Fügt das Label zum Fenster hinzu.root.mainloop()
: Startet die GUI-Schleife, die auf Benutzereingaben wartet.
Wenn Sie den Code ausführen, sollte ein Fenster mit einem Button angezeigt werden. Wenn Sie den Button klicken, wird der Text unter dem Button auf „Button wurde geklickt!“ geändert.
Einfache Schaltflächen sind ziemlich unkompliziert zu verwenden. Sie müssen lediglich den Inhalt der Schaltfläche (Text, Bitmap oder Bild) angeben und angeben, welche Funktion oder Methode aufgerufen werden soll, wenn die Schaltfläche gedrückt wird:
Eine Schaltfläche ohne Callback ist ziemlich nutzlos; sie tut einfach nichts, wenn Sie die Schaltfläche drücken. Möglicherweise möchten Sie solche Schaltflächen ohnehin verwenden, wenn Sie eine Anwendung entwickeln. In diesem Fall ist es wahrscheinlich eine gute Idee, die Schaltfläche zu deaktivieren, um Ihre Betatester nicht zu verwirren:
from tkinter import *
master = Tk()
def callback():
print "click!"
b = Button(master, text="OK", command=callback)
b.pack()
mainloop()
b = Button(master, text="Help", state=DISABLED)
Wenn Sie keine Größe angeben, wird die Schaltfläche gerade groß genug gemacht, um ihren Inhalt aufzunehmen. Sie können die Optionen padx und pady verwenden, um etwas zusätzlichen Abstand zwischen dem Inhalt und dem Schaltflächenrand hinzuzufügen.
Sie können auch die Optionen height und width verwenden, um die Größe explizit festzulegen. Wenn Sie Text in der Schaltfläche anzeigen, definieren diese Optionen die Größe der Schaltfläche in Texteinheiten. Wenn Sie stattdessen Bitmaps oder Bilder anzeigen, definieren sie die Größe in Pixeln (oder anderen Bildschirmeinheiten). Sie können die Größe sogar für Textschaltflächen in Pixeln angeben, aber dazu ist etwas Zauberei nötig. Hier ist eine Möglichkeit, dies zu tun (es gibt noch andere):
Weitere Beispiele:
add_button = Button(root, text="Text hinzufügen", command=addText)
add_button.pack()
save_button = Button(root, text="Text speichern", command=saveText)
save_button.pack()
load_button = Button(root, text="Text laden", command=loadText)
load_button.pack()
copy_button = Button(root, text="Kopieren", command=copyToClipboard)
copy_button.pack()
delete_button=Button(root, text="Löschen",
delete_button.pack()