我想在 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/