Python Text kopieren

Um den Text des Buttons in die Zwischenablage zu kopieren, damit er in eine andere Anwendung eingefügt werden kann, können wir die pyperclip-Bibliothek verwenden.
Pyperclip bietet ein plattformübergreifendes Python-Modul zum Kopieren und Einfügen von Text in die Zwischenablage.

Um Text in die Zwischenablage zu kopieren, übergeben Sie eine Zeichenfolge an pyperclip.copy(). Um den Text aus der Zwischenablage einzufügen, rufen Sie pyperclip.paste() auf und der Text wird als Zeichenfolgenwert zurückgegeben.

import pyperclip
pyperclip.copy(‚Hallo Welt!‘)
pyperclip.paste()
„Hallo Welt!“

Pyperclip hat auch eine Funktion pyperclip.waitForPaste(), die blockiert und nicht zurückkehrt, bis sich eine nicht leere Textzeichenfolge in der Zwischenablage befindet. Anschließend wird diese Zeichenfolge zurückgegeben. Die Funktion pyperclip.waitForNewPaste() blockiert, bis sich der Text in der Zwischenablage geändert hat:

import pyperclip
pyperclip.waitForPaste() # Kehrt erst zurück, wenn sich nicht leerer Text in der Zwischenablage befindet.
„Hallo Welt!“

pyperclip.copy(‚Originaltext‘)
pyperclip.waitForNewPaste() # Kehrt erst zurück, wenn die Zwischenablage etwas anderes als den „Originaltext“ enthält.
„Hallo Welt!“

Diese Funktionen verfügen auch über ein Timeout-Argument, um die zu prüfende Sekundenanzahl anzugeben. Wenn das Timeout abläuft, ohne dass eine Rückkehr erfolgt, lösen die Funktionen eine Ausnahme PyperclipTimeoutException aus:

pyperclip importieren
pyperclip.waitForNewPaste(5)
Traceback (letzter Anruf zuletzt):
Datei „“, Zeile 1, in
Datei „c:\github\pyperclip\src\pyperclip__init__.py“, Zeile 689, in waitForNewPaste
PyperclipTimeoutException auslösen(‚waitForNewPaste() hat nach ‚ + str(timeout) + ‚ Sekunden eine Zeitüberschreitung‘).
pyperclip.PyperclipTimeoutException: waitForNewPaste() ist nach 5 Sekunden abgelaufen.

Fehler „Nicht implementiert“

Möglicherweise erhalten Sie die folgende Fehlermeldung: “Pyperclip could not find a copy/paste mechanism for your system“

Um unter Windows, Mac und Linux gleichermaßen gut zu funktionieren, verwendet Pyperclip hierfür verschiedene Mechanismen. Derzeit sollte dieser Fehler nur unter Linux auftreten (nicht unter Windows oder Mac). Sie können dies beheben, indem Sie einen der Kopier-/Einfügemechanismen installieren:

sudo apt-get install xsel, um das Dienstprogramm xsel zu installieren.
sudo apt-get install xclip, um das Dienstprogramm xclip zu installieren.
pip install gtk, um das GTK-Python-Modul zu installieren.
pip install PyQt4, um das PyQt4-Python-Modul zu installieren.

Ein Beispiel:

import tkinter as tk
import pyperclip

def copy_to_clipboard(text):
    pyperclip.copy(text)

# GUI erstellen
root = tk.Tk()
root.title("Anleitungen mitschreiben")

# Buttons erstellen
btn_abbrechen = tk.Button(root, text="Abbrechen", command=root.destroy)
btn_abbrechen.pack(pady=5)

btn_reihe = tk.Button(root, text="Reihe", command=lambda: copy_to_clipboard("Reihe"))
btn_reihe.pack(pady=5)

# Fenster zentrieren
window_width = 300
window_height = 150
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width // 2) - (window_width // 2)
y = (screen_height // 2) - (window_height // 2)
root.geometry(f'{window_width}x{window_height}+{x}+{y}')

# Hauptschleife starten
root.mainloop()

Erklärung:

  1. Wir importieren pyperclip, eine Bibliothek zum Arbeiten mit der Zwischenablage.
  2. Eine Funktion copy_to_clipboard(text) wird definiert, die den übergebenen Text in die Zwischenablage kopiert.
  3. Der „Reihe“-Button wird mit einem command erstellt, der copy_to_clipboard("Reihe") aufruft.
  4. Die Fensterhöhe wurde leicht erhöht, um Platz für den zusätzlichen Button zu schaffen.

Bevor Sie diesen Code ausführen, stellen Sie sicher, dass Sie pyperclip installiert haben. Sie können es mit dem Befehl des Paketmanagers der Distribution installieren. Zum Beispiel:

pip install pyperclip

Mit diesen Änderungen wird der Text „Reihe“ in die Zwischenablage kopiert, wenn Sie auf den „Reihe“-Button klicken. Sie können dann den Text in eine andere Anwendung einfügen.

Es gibt mehrere Alternativen zu pyperclip für das Kopieren und Einfügen von Text in die Zwischenablage:

  1. clipman: Ein neuerer Ersatz für pyperclip mit verbesserter Architektur und Benutzerfreundlichkeit
  2. tkinter: Eine integrierte Python-Bibliothek, die Zwischenablagenfunktionen bietet.
  3. Betriebssystemspezifische Lösungen:
  • Windows: Verwendung der AutoHotkey-DLL mit ctypes
  • Linux: Nutzung von xclip oder xsel Befehlen
  • macOS: Verwendung der pbcopy und pbpaste Befehle
  1. Qt-basierte Lösungen: Verwendung von qtpy oder PyQt5 Module für plattformübergreifende Unterstützung
  2. pandas: Bietet eine to_clipboard()-Methode, die auf einigen Systemen funktionieren kann

Bei der Wahl einer Alternative sollten Sie die spezifischen Anforderungen Ihres Projekts und die Zielplattformen berücksichtigen. Für maximale Kompatibilität könnte eine Kombination aus verschiedenen Methoden je nach Betriebssystem die beste Lösung sein.

# import all functions from the tkinter   
from tkinter import *
import tkinter as tk
import pyperclip
from tkinter import messagebox

def in_zwischenablage():
    pyperclip.copy("Reihe")
    messagebox.showinfo("Info", "Text 'Reihe' wurde in die Zwischenablage kopiert.")

#GUI
root=Tk()
root.title("Anleitungen  mitschreiben")
root.geometry("200x400")

#Button mit gewünschtem Text
btn_text=Button(root,text="Reihe", command=in_zwischenablage)
#print ("ok, erfolgreich")
btn_text.pack()

#Button Fenster schliessen
btn=Button(root,text="Abbrechen",command=root.destroy)
btn.pack()

root.mainloop()