如何在 QtextEdit 上重载粘贴
how can I oveload paste on a QtextEdit
我想在 QTextEdit 中粘贴具有特定字体大小的文本,例如。 14
我制作了一个用空白替换段落符号的应用程序 space,例如
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)
在上一个链接问题中,您使用了具有 void QLineEdit::textChanged(const QString &text)
signal that carries the text, but in the case of QTextEdit there is a signal with the same name void textChanged()
的 QLineEdit,但它不包含文本,因此这是错误的原因。这种情况的解决方案是使用对象而不是通过信号来获取文本。
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_())
我想在 QTextEdit 中粘贴具有特定字体大小的文本,例如。 14
我制作了一个用空白替换段落符号的应用程序 space,例如 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)
在上一个链接问题中,您使用了具有 void QLineEdit::textChanged(const QString &text)
signal that carries the text, but in the case of QTextEdit there is a signal with the same name void textChanged()
的 QLineEdit,但它不包含文本,因此这是错误的原因。这种情况的解决方案是使用对象而不是通过信号来获取文本。
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_())