TextBox und Zwischenablage

Fragen zu Tkinter.
Andreas.sinkel
User
Beiträge: 15
Registriert: Montag 20. September 2004, 11:40

TextBox und Zwischenablage

Beitragvon Andreas.sinkel » Montag 20. September 2004, 11:46

Hallo Leute,
ich habe folgende Frage:
kann ich einen Text, den ich zuvor in die Zwischenablage kopiert habe(z.B. aus Word), in eine Tkinter-Textbox einfügen? Gibt es in Tkinter sowas wie Clipboard-Objekt?
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Montag 20. September 2004, 13:49

Hi andreas,

es gibt eine clipboard_append Funktion in Tkinter, um Text ins Clipboard zu schreiben.
Zum Einfügen des Inhalts der Zwischenablage in eine Textbox würd ich mal [strg]+[v] versuchen.


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Andreas.sinkel
User
Beiträge: 15
Registriert: Montag 20. September 2004, 11:40

Beitragvon Andreas.sinkel » Dienstag 21. September 2004, 07:26

Hi Dookie,

vielen Dank für deine Antwort. <Strg>+ V ist natürlich auch eine Möglichkeit. Mein Programm ist aber an blutige Anfänger gerichtet, die mit Tastenkombinationen wenig anfangen können. Deswegen wollte ich eine Kopier-Funktion schreiben, die durch einen Button- oder Menu-Klick aufgerufen wird. Mittlerweile habe ich eine Lösung, welche allerdings wxPython voraussetzt:

Code: Alles auswählen

import wx
def einfuegen():
    meinTextObject=wx.TextDataObject()
    wx.TheClipboard.Open()
    wx.TheClipboard.GetData(meinTextObject)
    wx.TheClipboard.Close()
    meineTextBox.insert(END, meinTextObject.GetText())


Wie gesagt, der Nachteil dieser Lösung ist, dass sie nur mit dem installierten wxPython funktioniert. Ich hoffe, dass es auch mit Tkinter geht.
Ist es eigentlich möglich, eine Tastenkombination zu "simulieren"... ich meine dem Tkinter aus dem Quellcode heraus zu befehlen, die Operation durchzuführen, die normalerweise durch eine Tastenkombination aktiviert wird?
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Dienstag 21. September 2004, 11:55

Hi Andreas,

hab da was gefunden zum Zugriff auf das Windows-Clipboard.
http://margaretmorgan.com/wesley/python/

Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Andreas.sinkel
User
Beiträge: 15
Registriert: Montag 20. September 2004, 11:40

Beitragvon Andreas.sinkel » Dienstag 21. September 2004, 12:50

Danke!
Andreas.sinkel
User
Beiträge: 15
Registriert: Montag 20. September 2004, 11:40

Beitragvon Andreas.sinkel » Donnerstag 23. September 2004, 15:21

Über die Forum-Suche habe ich einen interessanten Beitrag gefunden. Der Autor(Gast) meint, dass man den Inhalt der Zwischenablage mit .selection_get("Clipboard") abfragen kann. Weiß jemand von euch, was Gast meint? So eine Funktion finde ich in keiner Dokumentation. selection_get() ohne Argumente wird ja verwendet, um die Auswahl in einer Entry oder TextBox zurückzugeben. Aber .selection_get("Clipboard")? Hmm...
Benutzeravatar
Michael Schneider
User
Beiträge: 566
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Re: TextBox und Zwischenablage

Beitragvon Michael Schneider » Dienstag 11. April 2006, 19:09

Andreas.sinkel hat geschrieben:Hallo Leute,
ich habe folgende Frage:
kann ich einen Text, den ich zuvor in die Zwischenablage kopiert habe(z.B. aus Word), in eine Tkinter-Textbox einfügen? Gibt es in Tkinter sowas wie Clipboard-Objekt?


Hallo Andreas,

ein Clipboard-Objekt kenne ich nicht, aber Du kannst unter UNIX-Derivaten die SELECTION verwenden, um auf markierten Text zuzugreifen. Doch Deine eigentliche Frage war, wie man auf die Zwischenablage zugreifen kann. Dafür gibt es eine sehr einfach Lösung:

"Das Python-Buch" (Auflage '97 wohlgemerkt) empfiehlt auf Seite 217:

Das Python-Buch hat geschrieben:Der Folgende Aufruf gibt Ihnen den Inhalt des
Clipboards als String zurück:

:arrow: entry.selection_get(selection="CLIPBOARD")


Praktisch angewendet bedeutet das folgendes:

Code: Alles auswählen

import Tkinter as TK
text = TK.Text()
text.insert("1.0", text.selection_get(selection="CLIPBOARD"))
text.grid()
text.mainloop()


Wenn Du den Code ausführst, wird der Inhalt der Zwischenablage im text-Feld angezeigt. :D

Übrigens, "Das Python-Buch" (Löwis/Fischbeck) ist für Anfänger ebenso zu empfehlen wie für Fortgeschrittene, auch wenn es nicht mehr ganz up-to-date ist!

Michael

p.s. Ich bekomme keine Tantiemen! :wink:
Diese Nachricht zersört sich in 5 Sekunden selbst ...

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder