PyQt PySide QTextEdit设置背景颜色失效

问题描述

在进行PyQt开发时,设置QTextEdit背景颜色:

w.setStyleSheet("background-color: rgb(0, 0, 0);")

但背景仍为白色,未发生改变

随后尝试了

p = w.viewport().palette()
p.setColor(w.viewport().backgroundRole(), QtGui.QColor(0,0,0))
wt.viewport().setPalette(p)

但也不行


解决方案:

这个问题一般是父对象或祖先对象设置了背景透明属性导致

在样式表中设置任一和border有关的属性即可解决问题,例如

w.setStyleSheet("background-color: rgb(0, 0, 0); border: none;")

References:

Qt QTextEdit行高和背景色设置_脏不张的博客-CSDN博客_qt textedit设置背景颜色

PyQt5中,你可以使用`QTextEdit`和`QSyntaxHighlighter`来设置文本块内的特定单词颜色。`QSyntaxHighlighter`允许你自定义文本高亮规则,包括颜色、字体等。 首先,你需要创建一个`QSyntaxHighlighter`的子类,并实现`highlightBlock()`方法,这个方法会在处理每一行文本时被调用。在这个方法里,你可以检查每个单词是否匹配你要高亮的关键字,并应用相应的样式。 下面是一个简单的例子,展示如何设置"Python"这个词为红色: ```python from PyQt5.QtGui import QTextCharFormat, QColor from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QTextEdit, QVBoxLayout class Highlighter(QSyntaxHighlighter): def __init__(self, parent=None): super().__init__(parent) self.highlightingRules = [] keyword_format = QTextCharFormat() keyword_format.setForeground(QColor('red')) # 设置颜色为红色 keyword_format.setFontWeight(Qt.Bold) # 加粗显示 pattern = r'\bPython\b' # 匹配单词"Python" rule = (pattern, keyword_format) self.highlightingRules.append(rule) def highlightBlock(self, text): for pattern, format in self.highlightingRules: expression = QRegExp(pattern) index = expression.indexIn(text) while index >= 0: length = expression.matchedLength() self.setFormat(index, length, format) index = expression.indexIn(text, index + length) app = QApplication([]) text_edit = QTextEdit() layout = QVBoxLayout() layout.addWidget(text_edit) highlighter = Highlighter(text_edit.document()) text_edit.setDocument(highlighter.document()) # 示例文字 text = "This is a sample text using Python for highlighting." text_edit.setPlainText(text) text_edit.show() app.exec_() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值