如何在QtextEdi上加载粘贴

2024-10-03 04:36:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在qtexttedit中粘贴具有特定字体大小的文本,例如14

我做了一个应用程序,用一个空格代替paraghaph标志,就像在 PyQt QLineEdit and 'paste' event?

关于def__init__(self)I代码:

self.textEdit.textChanged.connect(self.valueChanged)

那么

def valueChanged(self, text):
    if QtGui.QApplication.clipboard().text() == text:
        self.pasteEvent(text)

然后呢

def pasteEvent(self, text):
    text.toUpper()
TypeError: valueChanged() takes exactly 2 arguments (1 given)

Tags: text文本self应用程序粘贴标志defpyqt
1条回答
网友
1楼 · 发布于 2024-10-03 04:36:57

在链接的上一个问题中,您使用的QLineEdit具有携带文本的^{}信号,但在qtexted的情况下,有一个具有相同名称^{}的信号,但它不携带文本,因此这就是错误的原因。这种情况的解决方案是使用对象而不是通过信号获取文本。你知道吗

def valueChanged(self):
    if QtGui.QApplication.clipboard().text() == self.textEdit.text():
        self.pasteEvent(text)

尽管您的目标是更改字体大小,但由于您在粘贴文本后检测到事件,因此之前的逻辑不起作用,如果您想在粘贴过程中修改某些内容,则必须重写insertFromMimeData()方法:

from PyQt4 import QtCore, QtGui


class TextEdit(QtGui.QTextEdit):
    def insertFromMimeData(self, source):
        last_font = self.currentFont()

        new_font = QtGui.QFont(last_font)
        new_font.setPointSize(14)
        self.setCurrentFont(new_font)
        super(TextEdit, self).insertFromMimeData(source)
        self.setCurrentFont(last_font)


if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)

    w = TextEdit()
    w.show()
    sys.exit(app.exec_())

相关问题 更多 >