QTextEdit: Auswahl überschreibt Text Style

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Hallo Leute

In meiner PySide6 GUI verwende ich ein QTextEdit.
Der Text wird mit verschiedenen Vorder- und Hintergrundfarben angezeigt.
Wenn ich jedoch den Text markiere, wird der markierte Text vollständig schwarz-blau angezeigt.
Ich möchte aber, dass sich die Auswahl nur über den Text drüberlegt, wie man das von Word kennt.

Wie kann ich das anstellen?
Benutzeravatar
Kebap
User
Beiträge: 686
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Hallo Fire Spike,

kannst du ein Beispiel zeigen, der genau das beschriebene Verhalten demonstriert?
Vermutlich musst du Vorher- und Hintergrundfarbe unterschiedlich wählen, sonst siehst du einen "einfarbigen Block".
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Code: Alles auswählen

from PySide6.QtWidgets import QApplication, QMainWindow, QTextEdit
from PySide6.QtCore import QRect
import sys

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.text_entry = QTextEdit(self)

        self.text_entry.setGeometry(QRect(0, 0, 917, 670))
        self.text_entry.setHtml("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }\nhr { height: 1px; border-width: 0; }\nli.unchecked::marker { content: \"\\2610\"; }\nli.checked::marker { content: \"\\2612\"; }\n</style></head><body style=\" font-family:'Segoe UI'; font-size:9pt; font-weight:400; font-style:normal;\">\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:'MS Sans Serif'; color:#ffffff; background-color:#000000;\">I'm black</span></p>\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:'MS Sans Serif';\">I'm white</span></p>\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:'MS Sans Serif'; color:#6cdfff; background-color:#ff8649;\">I'm colorful</span></p></body></html>")

app = QApplication(sys.argv)

window = MainWindow()
window.show()

sys.exit(app.exec())
Hier das Beispiel
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du meinst eher unterlegt, nicht drueberlegt, so als ob das mit Textmarker gemacht wuerde? Ich vermute, das geht nicht. Ich finde jedenfalls nur selection-background-color und Co, und die kennen keine wie von dir hier letztlich geforderte dynamische Veraenderung der Vordergrundfarbe, weil sonst zB gelber Grund mit weisser Schrift nicht geht.
Benutzeravatar
Kebap
User
Beiträge: 686
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

In Word ist es so:
Ich habe 5 Worte mit 5 verschiedenen Schriftfarben auf weißem Grund.
Wenn ich alles markiere, ändert sich die Hintergrundfarbe von weiß zu hellgrau.
Es ändert sich aber nicht die Schriftfarbe. Das bleiben die 5 verschiedenen Farben.
Stimmt nicht ganz, weil sich die Farben auch (ein bisschen) abdunkeln, aber so ungefähr.
Also wenn man vorher weiße Schrift auf weißem Grund hat, erhält man genau so unsichtbare hellgraue Schrift in der Auswahl.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Antworten