【问题标题】:PyQt5 QTextEdit changes color when copy / pasting into itPyQt5 QTextEdit在复制/粘贴时改变颜色
【发布时间】:2021-01-15 08:39:12
【问题描述】:

在我的应用程序中,我有一个 QTextEdit。当我正常写入它时它工作得很好,但是当我从我的 IDE 复制/粘贴文本(例如 - 在我的情况下,pycharm 处于暗模式)到它时,QTextEdit 也会采用文本的颜色和背景。

这是正常的外观:

当我从我的 IDE 复制粘贴时会发生这种情况:

当颜色改变时,下一次写入输入将保持相同颜色,直到下一次复制/粘贴。

我怎样才能避免 QTextEdit 除了默认颜色(黑色文本,白色背景)之外的任何其他内容?

【问题讨论】:

    标签: python-3.x pyqt5


    【解决方案1】:

    QTextEdit 具有acceptRichText 属性。

    只需将其设置为 False。


    QTextEdit 允许使用富文本内容,如果您从中获取文本的源支持剪贴板的富文本,您就会得到它。
    为避免这种行为,您可以继承 QTextEdit 并覆盖 insertFromMimeData(mimeData)

    
    class TextEdit(QtWidgets.QTextEdit):
        def insertFromMimeData(self, source):
            newData = QtCore.QMimeData()
            for format in source.formats():
                if format == 'text/plain':
                    newData.setData(format, source.data(format))
            super().insertFromMimeData(newData)
    

    【讨论】:

    • @MatthieuRaynauddeFitte 不客气。抱歉第一个错误答案,我忘记了那个属性。
    • 不用担心,我很高兴这是我可以从 Qt Designer 更改的选项,它限制了代码的复杂性 ^^
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 2012-03-22
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多