python - 如何在 QtextEdit 上重载粘贴

标签 python pyqt pyqt4 qtextedit

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

我制作了一个用空格替换段落符号的应用程序,例如 PyQt QLineEdit and 'paste' event?

在 def __init__(self) 我代码:

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)

最佳答案

在上一个链接问题中,您使用的 QLineEdit 具有携带文本的 void QLineEdit::textChanged(const QString &text) 信号,但在 QTextEdit 的情况下,有一个同名的信号 void textChanged() 但它不携带文本,所以这就是原因的错误。这种情况的解决方案是使用对象而不是通过信号获取文本。

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_())

关于python - 如何在 QtextEdit 上重载粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57657535/

相关文章:

python - PIL(低)和多页 TIFFS

python - 不确定为什么我得到索引超出了OpenCV大小错误的轴的范围

python - 使用 QGridLayout 在 PyQt5 中进行简单聊天的 Gui

qt - 将现有 QDialog 保存到 *.ui 文件

python - 在PyQT中给QPlainTextEdit添加文本(结果是一个状态日志)

python - 通过 QtCore.SignalMapper 调用槽

python - 在 python 3 中排序列表

python - 如何检查 QTreeWidget 项目的状态?

Python for 循环无法按预期工作

python - 尝试为 flask 应用程序构建 docker 时出错