Seite 1 von 1
Kopieren, Einfügen; Leertaste durch Button blockiert
Verfasst: Samstag 6. Februar 2016, 11:54
von Pygoscelis papua
Ich bin gerade Dabei ein eigenes Text-Editor Widget zu erstellen, weil mir das buildin nicht ausreicht für spezielle Dinge.
Ich kann schon ganz normal Schreiben und so mein Problem ist jetzt:
1. wie ich etwas einfügen kann
2. und außerdem wie ich verhindere, das mir PushButtons etc. die Leertaste blockieren
Die Tasten fange ich im MainWidget mit
Code: Alles auswählen
def keyPressEvent(self, e):
self.wid.keyPress(e.key(), e.text())
ab wobei self.wid mein selbsterstelltes widget ist.
Ich kann gerne noch weitere Codeteile senden, wenn jemand diese gebrauchen kann, um die Frage zu beantworten.
Re: Kopieren, Einfügen; Leertaste durch Button blockiert
Verfasst: Samstag 6. Februar 2016, 15:05
von Madmartigan
Dazu ein paar Fragen:
Welche Funktionalität von QLineEdit, QPlainTextEdit oder QTextEdit fehlt dir denn?
Warum implementierst du die Key Events in der MainForm und nicht im Widget selber? Wenn das Widget nicht fokussiert ist, sollte es auch nicht auf Input-Events reagieren.
Statt ein komplett eigenes Widget zu bauen, wäre es nicht eher empfehlenswert von QLineEdit, QPlainTextEdit oder QTextEdit zu erben und dein gewünschtes Feature einfach hinzuzufügen? Denn Cut/Copy/Paste sind bereits implementiert bei den Basis Klassen.
Re: Kopieren, Einfügen; Leertaste durch Button blockiert
Verfasst: Samstag 6. Februar 2016, 15:37
von Pygoscelis papua
Madmartigan hat geschrieben:
Welche Funktionalität von QLineEdit, QPlainTextEdit oder QTextEdit fehlt dir denn?
Z.B. Das man Zeilen ausblenden kann, dass Zeilenzahlen angezeigt werden etc.
Wie schaffe ich es denn, dass mein Widget fokusiert wird?
Das mit dem Kopieren habe ich erstmal mit pyperclip gelöst, wenn jemand etwas besseres weiß, bitte sagen.
Re: Kopieren, Einfügen; Leertaste durch Button blockiert
Verfasst: Samstag 6. Februar 2016, 19:10
von Pygoscelis papua
Für das fokusieren habe ich jetzt die setFokus() funktion verwendet, und dafür gesorgt, dass oft der Fokus auf mein Widget gestellt wird.
Ich glaube aber, dass das nicht so sinvoll ist bzw. nicht stilvoll.
Wenn jemand eine Bessere Idee hat, würde ich mich freuen wenn er mir diese sagt.
Re: Kopieren, Einfügen; Leertaste durch Button blockiert
Verfasst: Montag 8. Februar 2016, 08:35
von Pygoscelis papua
Also das mit dem fokusieren habe ich jetzt behoben indem ich einfach dann fukusiere, wennauf das Widget geclickt wird. (hätte mir auch früher einfallen können)
für das kopieren habe ich jetzt das QClipboard gefunden aber ich verstehe nicht wie es zu handhaben ist.
Kann mir da jemand helfen?
Re: Kopieren, Einfügen; Leertaste durch Button blockiert
Verfasst: Montag 8. Februar 2016, 11:47
von BlackJack
@Pygoscelis papua: Wo liegt denn das konkrete Problem? Du holst Dir vom `QApplication`-Typ über die statische Methode `clipboard()` das `QClipboard`-Objekt und von dem dann mit der `text()`-Methode den Text.
Re: Kopieren, Einfügen; Leertaste durch Button blockiert
Verfasst: Montag 15. Februar 2016, 08:21
von Pygoscelis papua
Ok Danke ich hatte irgendein Problem, weshalb das nicht funktioniert hat, jetzt geht das aber.
Re: Kopieren, Einfügen; Leertaste durch Button blockiert
Verfasst: Montag 15. Februar 2016, 16:32
von Madmartigan
Pygoscelis papua hat geschrieben:[...] dass oft der Fokus auf mein Widget gestellt wird.
Ich glaube aber, dass das nicht so sinvoll[...]
Die Erkenntnis ist korrekt.
Der Fokus ist nichts, was programmatisch dann und wann geändert respektive einem anderen Widget zugewiesen werden sollte. Für gewisse Fälle macht das Sinn, aber in deinem Kontext wäre das nicht praktikabel, schon gar nicht
oft.
Ich will nur noch mal darauf hinweisen, dass du meiner Einschätzung nach den steinigsten Weg gehst. Für Zeilennummern und Code-Folding brauchst du kein eigenes Widget von quasi
komplett Null zu bauen. Das Nächstliegende ist hier tatsächlich, von QTextEdit zu erben und das Widget um die beiden Features zu erweitern.
Es scheint als möchtest du deinen eigenen (Code-)Editor bauen, da wärst du nicht der Erste.

Schau einfach mal im Netz, es gibt bereits Beispiele und Lösungen für dein Vorhaben, sogar mit Syntax-Highlighting etc.
~Mad
Re: Kopieren, Einfügen; Leertaste durch Button blockiert
Verfasst: Freitag 26. Februar 2016, 08:13
von Pygoscelis papua
Ich weiß nicht was ich falsch mache, aber ich finde weder einen selbsgebauten Editor, also mit Python noch eine vernünftige anleitung zum erweitern
von einem Widget. Kann mir da jemand helfen?
Re: Kopieren, Einfügen; Leertaste durch Button blockiert
Verfasst: Freitag 26. Februar 2016, 19:12
von jerch