Hier entwickle ich mit Python und tkinter eine einfache Anwendung zur Erstellung von Buttons, die eine Einfügung in die Zwischenablage ermöglicht. Bitte beachten: ich erstelle erst das Design und dann die technischen Möglichkeiten / Zusammenhänge
- Erforderliche Widgets importieren:
from tkinter import *
import tkinter as tk
import os
2. einfaches Fenster erstellen:
root=Tk()
root.geometry("300x400")
root.mainloop()
3. Eingabefelder einfügen:
from tkinter import *
import tkinter as tk
root=Tk()
kurzbezeichnung = tk.Entry(root)
kurzbezeichnung.pack()
textfeld = tk.Text(master=root, width=39, height=4)
textfeld.pack()
root.geometry("300x400")
root.mainloop()

Text für die Eingabefelder einfügen:
import tkinter as tk
root = tk.Tk()
# Erstes Label
label1 = tk.Label(root, text="Kurzbezeichnung einfügen:")
label1.pack()
# Eingabefeld
kurzbezeichnung = tk.Entry(root)
kurzbezeichnung.pack()
# Zweites Label unter dem Eingabefeld
label2 = tk.Label(root, text="Dazugehörigen Text eingeben:")
label2.pack()
# Textfeld
textfeld = tk.Text(master=root, width=39, height=4, wrap='word')
textfeld.pack()
root.geometry("300x400")
root.mainloop()
root.mainloop()

Button hinzufügen
import tkinter as tk
root = tk.Tk()
# Erstes Label
label1 = tk.Label(root, text="Kurzbezeichnung einfügen:")
label1.pack()
# Eingabefeld
kurzbezeichnung = tk.Entry(root)
kurzbezeichnung.pack()
# Zweites Label unter dem Eingabefeld
label2 = tk.Label(root, text="Dazugehörigen Text eingeben:")
label2.pack()
# Textfeld
textfeld = tk.Text(master=root, width=39, height=4, wrap='word')
textfeld.pack()
#Button mit verknüpftem command:
ok_button = tk.Button(root, text="OK", command=ok_action)
ok_button.pack(padx=20, pady=20)
root.geometry("300x400")
root.mainloop()
root.mainloop()

Speichern Button hinzufügen
(hier sollen die Einträge in einer Datei gespeichert werden – wird noch hinzugefügt)
def ok_action():
print("OK-Button gedrückt")
def save_action():
print ("Wird noch eingerichtet")
import tkinter as tk
import os
root = tk.Tk()
# Erstes Label
label1 = tk.Label(root, text="Kurzbezeichnung einfügen:")
label1.pack()
# Eingabefeld
kurzbezeichnung = tk.Entry(root)
kurzbezeichnung.pack()
# Zweites Label unter dem Eingabefeld
label2 = tk.Label(root, text="Dazugehörigen Text eingeben:")
label2.pack()
# Textfeld
textfeld = tk.Text(master=root, width=39, height=4, wrap='word')
textfeld.pack()
#Button mit verknüpftem command:
ok_button = tk.Button(root, text="OK", command=ok_action)
ok_button.pack(padx=20, pady=20)
speichern_button=tk.Button(root, text="Speichern", command=save_action)
speichern_button.pack()
root.geometry("300x400")
root.mainloop()
root.mainloop()

Einen Exit Button erstellen
import tkinter as tk
from tkinter import Menu, filedialog, messagebox
import json
def exit_action():
root.quit()
def save_button_data(text, x, y):
try:
try:
with open("buttons.txt", "r", encoding="utf-8") as f:
buttons = json.load(f)
except FileNotFoundError:
buttons = []
buttons.append({"text": text, "x": x, "y": y})
with open("buttons.txt", "w", encoding="utf-8") as f:
json.dump(buttons, f)
except Exception as e:
print(f"Fehler beim Speichern der Buttons: {e}")
def create_button(event):
bezeichnung = kurzbezeichnung.get()
btn = tk.Button(root, text=bezeichnung)
btn.place(x=event.x, y=event.y)
save_button_data(bezeichnung, event.x, event.y)
def load_buttons():
try:
with open("buttons.txt", "r", encoding="utf-8") as f:
buttons = json.load(f)
for btn in buttons:
b = tk.Button(root, text=btn["text"])
b.place(x=btn["x"], y=btn["y"])
except FileNotFoundError:
pass
except Exception as e:
print(f"Fehler beim Laden der Buttons: {e}")
def exit_app():
root.quit()
def save_action():
kurz = kurzbezeichnung.get() # Inhalt des Entry-Felds
text = textfeld.get("1.0", "end-1c") # Inhalt des Textfelds
try:
with open("eingaben.txt", "a", encoding="utf-8") as f: # 'a' für Anhängen!
f.write("Kurzbezeichnung:\n")
f.write(kurz + "\n\n")
f.write("Text:\n")
f.write(text + "\n")
f.write("-" * 40 + "\n")
print("Eingaben wurden gespeichert.")
except Exception as e:
print(f"Fehler beim Speichern: {e}")
def copy_text_to_clipboard():
text = textfeld.get("1.0", "end-1c")
root.clipboard_clear()
root.clipboard_append(text)
root.update()
root = tk.Tk()
root.geometry("300x400")
# Menüleiste erstellen
menubar = Menu(root)
root.config(menu=menubar)
datei_menu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Datei", menu=datei_menu)
datei_menu.add_command(label="Speichern unter...", command=save_action)
datei_menu.add_separator()
datei_menu.add_command(label="Beenden", command=exit_app)
# Rechtsklick auf das Fenster erzeugt einen neuen Button
root.bind("<Button-3>", create_button)
# Erstes Label
label1 = tk.Label(root, text="Kurzbezeichnung einfügen:")
label1.pack()
# Eingabefeld
kurzbezeichnung = tk.Entry(root)
kurzbezeichnung.pack()
# Zweites Label unter dem Eingabefeld
label2 = tk.Label(root, text="Dazugehörigen Text eingeben:")
label2.pack()
# Textfeld
textfeld = tk.Text(master=root, width=39, height=4, wrap='word')
textfeld.pack()
# OK-Button
#ok_button = tk.Button(root, text="OK", command=ok_action)
#ok_button.pack(padx=20, pady=20)
# Speichern-Button
speichern_button = tk.Button(root, text="Speichern", command=save_action)
speichern_button.pack()
#Exit Button
exit_button = tk.Button(root, text="Exit", command=exit_action)
exit_button.pack(side="bottom", pady=10)
#Copy Button
copy_button = tk.Button(root, text="Kopieren", command=copy_text_to_clipboard)
copy_button.pack(pady=10)
root.mainloop()

Dateimenü erstellen:
def ok_action():
print("OK-Button gedrückt")
def save_action():
print ("Wird noch eingerichtet")
import tkinter as tk
from tkinter import Menu, filedialog, messagebox
root = tk.Tk()
# Datei-Menü anlegen
# Menüleiste erstellen
menubar = Menu(root)
root.config(menu=menubar)
datei_menu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Datei", menu=datei_menu)
datei_menu.add_command(label="Speichern unter...", command=save_action)
datei_menu.add_separator()
datei_menu.add_command(label="Beenden", command=exit)
# Erstes Label
label1 = tk.Label(root, text="Kurzbezeichnung einfügen:")
label1.pack()
# Eingabefeld
kurzbezeichnung = tk.Entry(root)
kurzbezeichnung.pack()
# Zweites Label unter dem Eingabefeld
label2 = tk.Label(root, text="Dazugehörigen Text eingeben:")
label2.pack()
# Textfeld
textfeld = tk.Text(master=root, width=39, height=4, wrap='word')
textfeld.pack()
#Button mit verknüpftem command:
ok_button = tk.Button(root, text="OK", command=ok_action)
ok_button.pack(padx=20, pady=20)
speichern_button=tk.Button(root, text="Speichern", command=save_action)
speichern_button.pack()
root.geometry("300x400")
root.mainloop()

Jetzt geht es vom Styling in die technische Entwicklung
Eingaben speichern lassen:
def ok_action():
print("OK-Button gedrückt")
def exit():
root.quit()
def save_action():
kurz = kurzbezeichnung.get() # Inhalt des Entry-Felds
text = textfeld.get("1.0", "end-1c") # Inhalt des Textfelds
try:
with open("eingaben.txt", "w", encoding="utf-8") as f:
f.write("Kurzbezeichnung:\n")
f.write(kurz + "\n\n")
f.write("Text:\n")
f.write(text)
print("Eingaben wurden gespeichert.")
except Exception as e:
print(f"Fehler beim Speichern: {e}")
import tkinter as tk
from tkinter import Menu, filedialog, messagebox
root = tk.Tk()
# Datei-Menü anlegen
# Menüleiste erstellen
menubar = Menu(root)
root.config(menu=menubar)
datei_menu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Datei", menu=datei_menu)
datei_menu.add_command(label="Speichern unter...", command=save_action)
datei_menu.add_separator()
datei_menu.add_command(label="Beenden", command=exit)
# Erstes Label
label1 = tk.Label(root, text="Kurzbezeichnung einfügen:")
label1.pack()
# Eingabefeld
kurzbezeichnung = tk.Entry(root)
kurzbezeichnung.pack()
# Zweites Label unter dem Eingabefeld
label2 = tk.Label(root, text="Dazugehörigen Text eingeben:")
label2.pack()
# Textfeld
textfeld = tk.Text(master=root, width=39, height=4, wrap='word')
textfeld.pack()
#Button mit verknüpftem command:
ok_button = tk.Button(root, text="OK", command=ok_action)
ok_button.pack(padx=20, pady=20)
speichern_button=tk.Button(root, text="Speichern", command=save_action)
speichern_button.pack()
root.geometry("300x400")
root.mainloop()

Mit Rechtsklick einen neuen Button erstellen lassen:
def ok_action():
print("OK-Button gedrückt")
def create_button(event):
# Erzeuge neuen Button an der Position des Rechtsklicks
btn = tk.Button(root, text="Neuer Button")
btn.place(x=event.x, y=event.y)
def exit():
root.quit()
def save_action():
kurz = kurzbezeichnung.get() # Inhalt des Entry-Felds
text = textfeld.get("1.0", "end-1c") # Inhalt des Textfelds
try:
with open("eingaben.txt", "w", encoding="utf-8") as f:
f.write("Kurzbezeichnung:\n")
f.write(kurz + "\n\n")
f.write("Text:\n")
f.write(text)
print("Eingaben wurden gespeichert.")
except Exception as e:
print(f"Fehler beim Speichern: {e}")
import tkinter as tk
from tkinter import Menu, filedialog, messagebox
root = tk.Tk()
# Datei-Menü anlegen
# Menüleiste erstellen
menubar = Menu(root)
root.config(menu=menubar)
datei_menu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Datei", menu=datei_menu)
datei_menu.add_command(label="Speichern unter...", command=save_action)
datei_menu.add_separator()
datei_menu.add_command(label="Beenden", command=exit)
# Rechtsklick auf das Fenster erzeugt einen neuen Button
root.bind("<Button-3>", create_button)
# Erstes Label
label1 = tk.Label(root, text="Kurzbezeichnung einfügen:")
label1.pack()
# Eingabefeld
kurzbezeichnung = tk.Entry(root)
kurzbezeichnung.pack()
# Zweites Label unter dem Eingabefeld
label2 = tk.Label(root, text="Dazugehörigen Text eingeben:")
label2.pack()
# Textfeld
textfeld = tk.Text(master=root, width=39, height=4, wrap='word')
textfeld.pack()
#Button mit verknüpftem command:
ok_button = tk.Button(root, text="OK", command=ok_action)
ok_button.pack(padx=20, pady=20)
speichern_button=tk.Button(root, text="Speichern", command=save_action)
speichern_button.pack()
root.geometry("300x400")
root.mainloop()

Kurzbezeichung für den Button statt Neuer Button:
