Python – tkinter mit Beispielen

Tkinter ist die De-facto-Methode in Python, um grafische Benutzeroberflächen (GUIs) zu erstellen.

Die Installation von Tkinter unter Windows ist genauso einfach wie die Installation von Python 3.x, da Tkinter im Python 3-Kern enthalten ist. Unter Gentoo-Linux muss das USE – Flag von Python angepasst werden.

Um zu überprüfen, ob Tkinter zum Laden durch Python installiert ist, führen Sie den folgenden Code in einer Python-Konsole aus: import tkinter

Falls dort kein Fehler erscheint ist es erfolgreich eingebunden.

Über den Befehl tkinter._test() kann ein Testbutton mit Systeminfos aufgerufen werden.

Ein einfaches Fenster wird durch folgende Befehle erstellt:

from tkinter import *

Das Modul wird importiert
Die Unterstützung für Tkinter ist auf mehrere Module verteilt. Die meisten Anwendungen benötigen das Hauptmodul tkinter sowie das Modul tkinter.ttk, das den modernen thematischen Widget-Satz und die API bereitstellt.

Damit die Ausgaben von print nicht in der Konsole angezeigt wird muss die Python Datei als .pyw gespeichert werden.

Was ist der Unterschied zwischen TK und TTK in Python?

Das ist der eigentliche Unterschied zwischen den beiden: Tkinter-Widgets sind konfigurierbarer und ttk ist moderner und kann mit Stilen konfiguriert werden, die wirklich praktische Verknüpfungen sind

Die erforderlichen Module werden importiert. Hier werden alle Module, die für tkinter bereit stehen importiert. Jedes GUI benötigt in Python ein Root-Fenster. Das Root-Fenster ist im Prinzip das Hauptfenster, das dann angepasst und erweitert werden kann. Nach Erstellung des Root-Fensters wird die Schleife mainloop eingefügt, damit das Fenster aktiv bleibt.


from tkinter import *
root = Tk()
root.mainloop()

from tkinter import *
from tkinter import ttk
root=Tk()
ttk.Button(root, text="Hallo World").grid()
root.mainloop()

Grid und Pack sind Geometriemanager
Verschiedene Layout- bzw. Geometriemanager dürfen in einem Programm nicht genutzt werden

Die Größe des Fensters wird über geometry festgelegt

# import all functions from the tkinter   
from tkinter import *
 

root=Tk()
root.title("Typeitin")
root.geometry("500x800")
root.mainloop()

Wichtige Module:

  1. tkinter – Das ist das Standardmodul, das du für GUI-Programmierung in Python benutzt. Da ist alles Basis-Zeug drin, um Fenster, Buttons, Labels, und so’n Kram zu machen.
  2. ttk – Das steht für „themed tkinter“. Damit kriegst du stylischere Widgets wie bessere Buttons, Progress Bars, und mehr. Einfach fancier Stuff.
  3. tkinter.messagebox – Damit kannst du Messageboxen für Warnungen, Fehler, oder Infos aufpoppen lassen. Echt praktisch, wenn du dem User was Wichtiges mitteilen willst.
  4. tkinter.filedialog – Das ist für Dateiauswahl-Dialoge. Super nützlich, wenn du dem User erlauben willst, Dateien zu öffnen oder zu speichern.
  5. tkinter.colorchooser – Damit kannst du Farbauswahl-Dialoge machen. Wenn du dem User erlauben willst, ne Farbe auszuwählen, ist das dein Go-To.
  6. tkinter.simpledialog – Für einfache Eingabedialoge. Wenn du den User nach nem String oder ner Zahl fragen willst, hilft das richtig weiter.
  7. Pillow – Das ist zwar nicht direkt tkinter, aber mega nützlich. Es erweitert die Bildverarbeitung und erlaubt dir, Bilder in deinen tkinter-Apps zu verwenden.

Definition eines Labels

Ein Label ist ein Tkinter-Widget, das zum Anzeigen von Text oder Bildern in einer grafischen Benutzeroberfläche (GUI) verwendet wird. Es wird wie folgt definiert:

label = tk.Label(master, option=value, ...)

Erklärung der Argumente:

  • master ist das übergeordnete Widget, in dem das Label platziert wird (normalerweise das Hauptfenster root).
  • option=value sind optionale Schlüsselwort-Argumente zum Konfigurieren des Labels, z.B.:
    • text="Hallo Welt" zum Setzen des Labeltexts
    • font=("Arial", 14) zum Setzen der Schriftart und Größe
    • fg="red" zum Setzen der Textfarbe
    • bg="yellow" zum Setzen der Hintergrundfarbe
    • image=photo zum Anzeigen eines Bildes anstelle von Text

Nachdem das Label definiert wurde, muss es mit einer Geometrie-Manager-Methode wie .grid() oder .pack() in das übergeordnete Widget eingefügt werden.

Nun wird ein Rahmen und ein Title festgelegt.

from tkinter import *
from tkinter import ttk
root=Tk()
root.title("bmi berechnen")
root.geometry('350x400')
ttk.Button(root, text="Hallo World").grid()
root.mainloop()

Das durch unser Skript erzeugte Fenster bleibt solange in der Ereignis-Schleife (Event loop) bis wir das Fenster schließen.

from tkinter import *
import tkinter as tk
def zeigen():
	print ("Der Button wurde geklickt")
root=tk.Tk()
# root window title and dimension
root.title("Einfacher Button")
root.geometry("380x400")
 
# creating button
btn = Button(root, text="Drücken", command=zeigen)
btn.pack()
 
# running the main loop
root.mainloop()

Button mit anderer Farbe

# import all functions from the tkinter   
from tkinter import *
 
# import messagebox class from tkinter
from tkinter import messagebox

def delete():
# whole content of text area widget is deleted
    TextArea.delete(1.0, END)

root=Tk()
root.title("Typeitin")
root.geometry("500x800")
#create a text area for the root
# with lunida 13 font
# text area is for writing the content
delete_Button = Button(root, text = "Löschen", fg = "Black", bg = "Red", command = delete)
delete_Button.pack()

TextArea = Text(root, height = 5, width = 25, font = "lucida 13")
TextArea.pack()
root.mainloop()

Text in Tkinter

Das Text-Widget wird verwendet, wenn ein Benutzer mehrzeilige Textfelder einfügen möchte. Dieses Widget kann für eine Vielzahl von Anwendungen verwendet werden, bei denen mehrzeiliger Text erforderlich ist, z. B. für Nachrichten, das Senden von Informationen oder das Anzeigen von Informationen und viele andere Aufgaben. Wir können auch Mediendateien wie Bilder und Links in das Textwidget einfügen.

Optionale Parameters 
 

root – Hauptfenster
bg – Hintergrundfarbe
fg – Vordergrundfarbe
bd – Rahmen des widget
height – Höhe des Widget
width – Breite des Widget
font – Schrift des Widgets
cursor – Der Typ des zu verwendenden Cursors.
insetofftime – Die Zeit in Millisekunden, für die das Blinken des Cursors ausgeschaltet ist.
insertontime – die Zeit in Millisekunden, für die der Cursor blinkt.
padx – horizontale Polsterung. 
pady – vertikale Polsterung. 
state – Definiert, ob das Widget auf Maus- oder Tastaturbewegungen reagiert.
highlightthickness – Definiert die Stärke des Fokus-Highlights.
insertionwidth – Definiert die Breite des Einfügezeichens.
relief – Art des Randes, die SUNKEN, RAISED, GROOVE und RIDGE sein kann.
yscrollcommand – um das Widget vertikal scrollbar zu machen.
xscrollcommand – um das Widget horizontal scrollbar zu machen.
 

Bitte die unterschiedlichen Layout-Manager beachten.

                                                                                       
from tkinter import *
from tkinter import ttk

root = Tk()
root.title("Typeitin")
root.geometry('250x600')

T = Text(root, height=2, width=30)
T.pack()
T.insert(END, "Willkommen zu \n Typeitin")

message = Entry(root, width=10)
message.pack()  
message.insert(0, "")

ttk.Button(root, text="Eintrag hinzufügen").pack()

root.mainloop()
from tkinter import *
from tkinter import ttk

def addText():
    text_to_add = message.get()  # Den eingegebenen Text abrufen
    T.insert(END, text_to_add + "\n")  # Text zum Textfeld hinzufügen
    message.delete(0, END)  # Eingabefeld leeren

root = Tk()
root.title("Typeitin")
root.geometry('250x600')

T = Text(root, height=10, width=30)
T.pack()
T.insert(END, "Willkommen zu \nTypeitin\n")

message = Entry(root, width=10)
message.pack()  
message.insert(0, "")

# Create Go! Button
go_button = Button(root, text="GO!", command=addText, bg="#6FAFE7", width=15)
go_button.pack(pady=5)
ttk.Button(root, text="Eintrag hinzufügen").pack()

root.mainloop()

# import all functions from the tkinter   
from tkinter import *
 
# import messagebox class from tkinter
from tkinter import messagebox

def delete():
# whole content of text area widget is deleted
    TextArea.delete(1.0, END)

root=Tk()
root.title("Typeitin")
root.geometry("500x800")
#create a text area for the root
# with lunida 13 font
# text area is for writing the content
delete = Button(root, text = "Löschen", fg = "Black", bg = "Red", command = delete)

TextArea = Text(root, height = 5, width = 25, font = "lucida 13")
root.mainloop()
from tkinter import *

def create_button(event):
    new_button_text = entry.get()  # Hole den Eingabetext
    new_button = Button(root, text=new_button_text)
    new_button.place(x=event.x, y=event.y)

def ohne_Aenderung():
    print("ohne Änderung")

def Runde():
    print("Runde")

root = Tk()
root.bind("<Button-3>", create_button)
root.title("Typeitin")
root.geometry("300x200")

# Erstelle eine Eingabezeile für den Button-Text
entry = Entry(root)
entry.pack()

btn = Button(root, text="ohne Änderung", command=ohne_Aenderung)
btn.pack()

btn = Button(root, text="Runde", command=Runde)
btn.pack()

root.mainloop()


Wir erstellen eine Entry-Komponente mit entry = Entry(root) und fügen sie dem Fenster mit entry.pack() hinzu. Diese Komponente ermöglicht die Texteingabe. In der create_button-Funktion holen wir den Eingabetext mit new_button_text = entry.get() und verwenden diesen Text beim Erstellen des neuen Buttons: new_button = Button(root, text=new_button_text).

Speichern in einer Datei:

Eine Reaktion auf einen Mausklick definieren:

bind in Python ist dafür da, um Events (wie Mausklicks, Tastendrücke, etc.) mit Funktionen zu verknüpfen, die ausgeführt werden sollen, wenn dieses Event eintritt. Wenn du z.B. auf nen Button klickst oder ne Taste drückst, kannst du mit bind festlegen, welche Funktion dann aufgerufen wird.
Die Maustasten werden durch Nummern identifiziert. 1=Links, 2=Mitte, 3=Rechts

Einen Button zum Beenden des Fensters:

button = tk.Button (root, text='Beenden', width=25, command=root.destroy)
button.pack()

from tkinter import *
import tkinter as tk

def button_press(event):
    if event.num == 3:  # rechte Maustaste
        print("rechte Maus gedrückt")

        
root = tk.Tk()

eingabe=Label(root, text="Hier den einzufügenden Text eingeben")
eingabe_wert=tk.Entry(root)
eingabe_wert.pack()
eingabe.pack()
button = tk.Button(root, text='Beenden', width=25, command=root.destroy)
button.pack()

root.bind("<Button>", button_press)  # bindet das Mausklick-Event an die Funktion
#root.bind("Beenden", beenden)
root.mainloop()

Eine Eingabe abfragen

  • x = StringVar() # Enthält eine Variable vom Typ string; default value „“
  • x = IntVar() # Enthält eine Variable vom Typ integer; default value 0
  • x = DoubleVar() # Enthält eine Variable vom Typ float; default value 0.0
  • x = BooleanVar() # Enthält eine Variable vom Typ boolean, returns 0 for False und 1 for True

Um den aktuellen Wert einer solchen Variablen zu lesen, benutzt man die Methode get(). Die Zuweisung eines neuen Wertes erfolgt mittels der Methode set().

text = eingabefeld_wert.get()  # Hole den Text aus dem Eingabefeld
eingabefeld_wert = tk.StringVar()
eingabefeld = tk.Entry(root, textvariable=eingabefeld_wert)
eingabefeld.pack()
import tkinter as tk
from tkinter.filedialog import askopenfilename
import tkinter.messagebox

def schreibe_in_datei():
        text = eingabefeld_wert.get()  # Hole den Text aus dem Eingabefeld
        with open("typeitin.txt", "a") as datei:
        datei.write(text + "\n")  # Füge eine Zeilenumbruch am Ende hinzu
        tkinter.messagebox.showinfo("Eintrag erfolgreich","Eintrag wurde hinzugefügt")
def callback():
    name = askopenfilename(master=root)

root = tk.Tk()
root.title("Typeitin")
root.geometry("300x500")

eingabefeld_wert = tk.StringVar()
eingabefeld = tk.Entry(root, textvariable=eingabefeld_wert)
eingabefeld.pack()



oeffnen = tk.Button(root, text='Datei öffnen', command=callback)
oeffnen.pack()

button = tk.Button(root, text="Schreibe in Datei", command=schreibe_in_datei)
button.pack()

root.mainloop()

Ein zusätzlicher Button wird hinzugefügt und gespeichert:

Python bietet ein eingebautes Modul namens json, mit dem wir JSON-Daten kodieren und dekodieren können. Der Prozess des Schreibens von JSON-Daten in eine Datei umfasst zwei Hauptschritte:

  1. Kodierung von Python-Daten in JSON: In diesem Schritt werden Python-Objekte in das JSON-Format konvertiert, so dass sie in einer Datei gespeichert werden können.
  2. Schreiben der kodierten JSON-Daten in eine Datei: Hier werden die JSON-Daten mithilfe der Dateiverarbeitungsfunktionen von Python in der Datei gespeichert.
import tkinter as tk
from tkinter.filedialog import askopenfilename
import tkinter.messagebox
import json

def schreibe_in_datei():
    text_eingabe = eingabefeld_wert.get()
    with open("typeitin.txt", "a") as datei:          
              datei.write(text_eingabe + "\n")
              tkinter.messagebox.showinfo("Eintrag erfolgreich", "Eintrag wurde hinzugefügt")

def callback():
    name = askopenfilename(master=root)

def rechtsklick(event):
    text_eingabe = eingabefeld_wert.get()
    button = tk.Button(button_container, text=text_eingabe)
    button.pack(fill=tk.X, padx=5, pady=2)
    
    buttons.append({"text": text_eingabe})
    save_buttons()

def save_buttons():
    with open("buttons.json", "w") as f:
        json.dump(buttons, f)

def load_buttons():
    try:
        with open("buttons.json", "r") as f:
            return json.load(f)
    except FileNotFoundError:
        return []

def create_saved_buttons():
    for button_info in buttons:
        button = tk.Button(button_container, text=button_info["text"])
        button.pack(fill=tk.X, padx=5, pady=2)

root = tk.Tk()
root.title("Typeitin")
root.geometry("300x500")

buttons = load_buttons()

eingabefeld_wert = tk.StringVar()
eingabefeld = tk.Entry(root, textvariable=eingabefeld_wert)
eingabefeld.pack(pady=5)

oeffnen = tk.Button(root, text='Datei öffnen', command=callback)
oeffnen.pack(pady=5)

button = tk.Button(root, text="Schreibe in Datei", command=schreibe_in_datei)
button.pack(pady=5)

button_container = tk.Frame(root)
button_container.pack(fill=tk.BOTH, expand=True)

root.bind("<Button-3>", rechtsklick)

create_saved_buttons()

root.mainloop()

Bei einem Rechtsklick soll die Möglichkeit gegeben werden, den neu erstellten Button wieder zu löschen:

import tkinter as tk

def delete_button(event):
    event.widget.destroy()

root = tk.Tk()

button = tk.Button(root, text="Klick mich rechts zum Löschen")
button.pack(pady=20)

# Binden des Rechtsklick-Ereignisses (Button-3) an die delete_button Funktion
button.bind("<Button-3>", delete_button)

root.mainloop()

import tkinter as tk
from tkinter import Menu

def delete_entry():
    print("Option 1 ausgewählt")

def new_entry():
    print("Option 2 ausgewählt")

def show_context_menu(event):
    context_menu.post(event.x_root, event.y_root)

root = tk.Tk()

# Erstellen des Kontextmenüs
context_menu = Menu(root, tearoff=0)
context_menu.add_command(label="Neuer Eintrag", command=new_entry)
context_menu.add_command(label="Löschen", command=delete_entry)
context_menu.add_separator()
context_menu.add_command(label="Beenden", command=root.quit)

# Erstellen eines Buttons
button = tk.Button(root, text="Rechtsklick auf mich")
button.pack(pady=20)

# Binden des Rechtsklick-Ereignisses an das Kontextmenü
button.bind("<Button-3>", show_context_menu)

root.mainloop()

Menü erstellen:



from tkinter import *
import tkinter as tk

def about():
	print("mady by Mandy Seider")

def NewFile():
	print("Neue Datei")
def OpenFile():
        print("Datei öffnen")

root=Tk()
menu = Menu(root)
root.config(menu=menu)
filemenu=Menu(menu)
menu.add_cascade(label="Datei", menu=filemenu)
filemenu.add_command(label="Neu", command=NewFile)
filemenu.add_command(label="Öffnen...", command=OpenFile)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)

helpmenu = Menu(menu)
menu.add_cascade(label="Hilfe", menu=helpmenu)
helpmenu.add_command(label="Über...", command=about)


root.mainloop()

Um ein Menü mit „Datei öffnen“ und „Datei speichern“ in Python mit Tkinter zu erstellen, können Sie folgende Schritte befolgen:

  1. Erstellen Sie ein Hauptmenü für das Fenster.
  2. Fügen Sie ein Untermenü „Datei“ hinzu.
  3. Implementieren Sie die Funktionen zum Öffnen und Speichern von Dateien.
  4. Fügen Sie die entsprechenden Menüeinträge hinzu.

Da im Befehl nur print aufgeführt ist werden die Ausgaben der Menüs nur in der Konsole angezeigt

Hier ist ein Beispielcode:

import tkinter as tk
from tkinter import filedialog

def open_file():
    file_path = filedialog.askopenfilename()
    if file_path:
        # Hier den Code zum Öffnen und Lesen der Datei einfügen
        print(f"Datei geöffnet: {file_path}")

def save_file():
    file_path = filedialog.asksaveasfilename(defaultextension=".txt")
    if file_path:
        # Hier den Code zum Speichern der Datei einfügen
        print(f"Datei gespeichert: {file_path}")

root = tk.Tk()
root.title("Meine Anwendung")

# Hauptmenü erstellen
menu_bar = tk.Menu(root)
root.config(menu=menu_bar)

# Datei-Menü erstellen
file_menu = tk.Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="Datei", menu=file_menu)

# Menüeinträge hinzufügen
file_menu.add_command(label="Öffnen", command=open_file)
file_menu.add_command(label="Speichern", command=save_file)
file_menu.add_separator()
file_menu.add_command(label="Beenden", command=root.quit)

root.mainloop()

Dieser Code erstellt ein Fenster mit einem Menü „Datei“, das die Optionen „Öffnen“, „Speichern“ und „Beenden“ enthält.

Die Funktionen open_file() und save_file() verwenden filedialog.askopenfilename() und filedialog.asksaveasfilename(), um die Standard-Dateidialoge des Betriebssystems zu öffnen[2][4].

In diesen Funktionen können Sie den Code zum tatsächlichen Öffnen, Lesen, Schreiben und Speichern von Dateien implementieren, je nach den Anforderungen Ihrer Anwendung.

Beachten Sie, dass tearoff=0 beim Erstellen des Datei-Menüs verwendet wird, um zu verhindern, dass das Menü „abgerissen“ werden kann[3].

Um dieses Menü in Ihre bestehende Anwendung zu integrieren, fügen Sie einfach den Menü-Code in Ihr Hauptfenster ein und passen Sie die open_file() und save_file() Funktionen an Ihre spezifischen Bedürfnisse an.

Pop-Up / Messagebox

Ein Menü mit Datei öffnen erstellen

#/usr/bin/python
from tkinter import *
import tkinter as tk
from tkinter import filedialog
from tkinter import Menu
root=tk.Tk()


def open_file():
    filename = filedialog.askopenfilename(
        title="Datei öffnen",
        filetypes=(("Textdateien", "*.txt"), ("Alle Dateien", "*.*"))
    )
    if filename:
        print(f"Ausgewählte Datei: {filename}")

menuleiste = Menu(root)
datei_menu = Menu(menuleiste, tearoff=0)
datei_menu.add_command(label="Öffnen", command=open_file)
menuleiste.add_cascade(label="Datei", menu=datei_menu)

root.config(menu=menuleiste)
root.mainloop()

Datei / Speichern unter

Ein einfaches Beispiel:

from tkinter import *
import tkinter.filedialog
import tkinter.messagebox
import tkinter as tk

root=tk.Tk()

def save_file():
    file_path = filedialog.asksaveasfilename(defaultextension=".txt",
                                             filetypes=[("Text files", "*.txt"),
                                                        ("All files", "*.*")])
    if file_path:
        # Hier können Sie den Inhalt in die ausgewählte Datei schreiben
        with open(file_path, "w") as file:
            file.write("Hier kommt der zu speichernde Inhalt")
        print(f"Datei gespeichert unter: {file_path}")

save_button = tk.Button(root, text="Speichern unter", command=save_file)

Datei / Speichern unter mit Menüleiste

import tkinter as tk
from tkinter import filedialog, messagebox

root = tk.Tk()
root.title("Datei-Beispiel")

def open_file():
    filename = filedialog.askopenfilename(
        title="Datei öffnen",
        filetypes=(("Textdateien", "*.txt"), ("Alle Dateien", "*.*"))
    )
    if filename:
        print(f"Datei geöffnet: {filename}")
    
def save_file():
    file_path = filedialog.asksaveasfilename(
        defaultextension=".txt",
        filetypes=[("Text files", "*.txt"), ("All files", "*.*")]
    )
    if file_path:
        # Hier können Sie den Inhalt in die ausgewählte Datei schreiben
        with open(file_path, "w") as file:
            file.write("Hier kommt der zu speichernde Inhalt")
        print(f"Datei gespeichert unter: {file_path}")



menuleiste = tk.Menu(root)
datei_menu = tk.Menu(menuleiste, tearoff=0)
datei_menu.add_command(label="Öffnen", command=open_file)
datei_menu.add_command(label="Speichern unter", command=save_file)
menuleiste.add_cascade(label="Datei", menu=datei_menu)

root.config(menu=menuleiste)
root.mainloop()

Eine Textarea definieren

import tkinter as tk
from tkinter.filedialog import askopenfilename
import tkinter.messagebox
from tkinter import Menu
from tkinter import filedialog
from tkinter import Tk, Text

def action_get_info_dialog():
    m_text = """
************************

Autor: Mandy Seider
Date: 24.06.24
Version: 1.00

************************"""
    tkinter.messagebox.showinfo("Info", m_text)

def schreibe_in_datei():
    text_eingabe = eingabefeld_wert.get()  # Hole den Text aus dem Eingabefeld
    with open("typeitin.txt", "a") as datei:
        datei.write(text_eingabe + "\n")  # Füge eine Zeilenumbruch am Ende hinzu
        tk.messagebox.showinfo("Eintrag erfolgreich","Eintrag wurde hinzugefügt")

def callback():
    name = askopenfilename(master=root)

def delete_entry():
    print("Option 1 ausgewählt")

def open_file():
    filename = filedialog.askopenfilename(
        title="Datei öffnen",
        filetypes=(("Textdateien", "*.txt"), ("Alle Dateien", "*.*"))
    )
    if filename:
        print(f"Datei geöffnet: {filename}")

def new_entry():
    print("ok, neuer Eintrag")

def new_button():
    button_text = eingabe_neu.get()  # Hole den Text aus dem neuen Eingabefeld
    if button_text:  # Überprüfe, ob Text eingegeben wurde
        new_button = tk.Button(root, text=button_text)
        new_button.pack()
        eingabe_neu.delete(0, tk.END)  # Lösche den Inhalt des Eingabefelds
    else:
        tk.messagebox.showwarning("Warnung", "Bitte geben Sie einen Text für den Button ein.")

def show_context_menu(event):
    context_menu.post(event.x_root, event.y_root)

root = tk.Tk()
root.title("Typeitin")
root.geometry("300x500")

menuleiste = Menu(root)

datei_menu = Menu(menuleiste, tearoff=0)
help_menu = Menu(menuleiste, tearoff=0)
help_menu.add_command(label="Info!", command=action_get_info_dialog)

datei_menu.add_command(label="Datei öffnen", command=open_file)
datei_menu.add_separator()
datei_menu.add_command(label="Exit", command=root.quit)

menuleiste.add_cascade(label="Datei", menu=datei_menu)
menuleiste.add_cascade(label="Help", menu=help_menu)

root.config(menu=menuleiste)          

label=tk.Label(root,text="Bezeichnung des Buttons")
label.pack()
# Neues Eingabefeld für den Buttontext
eingabe_neu = tk.Entry(root)
eingabe_neu.pack()

label=tk.Label(root,text="zugehörigen Text eingeben:")
label.pack()
text_area = Text(root, height=10, width=30)
text_area.pack()


oeffnen = tk.Button(root, text='Datei öffnen', command=callback)
oeffnen.pack()

# Erstellen des Kontextmenüs
context_menu = Menu(root, tearoff=0)
context_menu.add_command(label="Neuer Eintrag", command=new_entry)
context_menu.add_command(label="Löschen", command=delete_entry)
context_menu.add_separator()
context_menu.add_command(label="Beenden", command=root.quit)

button = tk.Button(root, text="Button erstellen", command=new_button)
button.pack()

button = tk.Button(root, text="Schreibe in Datei", command=schreibe_in_datei)
button.pack()

root.bind("<Button-3>", show_context_menu)
root.mainloop()

Eingabe kommt in die Anwendung – festlegen, kopiert und dann einfügen

import tkinter as tk
import pyautogui
import time

root = tk.Tk()
root.title("Text Einfüger")
root.geometry("300x200")

def einfuege_text(text):
    # Kurze Pause, um sicherzustellen, dass die Zielanwendung im Fokus ist
    time.sleep(0.5)
    # Text direkt eingeben
    pyautogui.typewrite(text)

# Vorgegebene Texte
texte = {
    "OS": "OS = Windows 11",
    "Browser": "Browser = Chrome 115.0.5790.171",
    "RAM": "RAM = 16 GB"
}

# Buttons erstellen
for label, text in texte.items():
    button = tk.Button(root, text=label, command=lambda t=text: einfuege_text(t))
    button.pack(pady=5)

root.mainloop()