我拼命地试图得到一个似乎很简单的问题的答案。因此,我的主要代码是一个拥有QTextEdit
的UI,并且我希望将字符数限制为140个。我认为,最好的方法是重新实现keyPressEvent
和KeyReleaseEvent
功能。
为此,我要使用自定义的“文本编辑”小部件创建一个类:
class CustomTextEdit(QtWidgets.QTextEdit):
def keyPressEvent(self, event, text):
if len(text) > 140:
return
else:
self.setText(text)
我这里不需要活动。我只需要传递一个参数,该参数将保存已经在文本编辑器中编写的文本。但是,当我尝试创建QEditText
并通过在主UI中说出当前文本来传递这些信息时:
self.text_edit = QtWidgets.CustomTextEdit()
self.text_edit.keyPressEvent(self.text_edit.toPlainText())
程序将其理解为好像我正在传递一个QKeyEvent
事件,并且当然会说它没有长度。
我在做什么错?如何传递事件和参数?甚至有可能吗?
我一直在阅读类似问题的答案,但仍然没有得到答案。请帮忙!
答案 0 :(得分:0)
keyPressEvent
只能接受两个参数:self
和event
(根据需要命名)。要访问已经在编辑器中编写的文本,可以在接受self.toPlainText()
的事件之前使用event.accept()
。因此,针对您的情况,将字符数限制为140个,我建议采用以下解决方法:
class CustomTextEdit(QWidgets.QTextEdit):
def keyPressEvent(self, event):
current_text = self.toPlainText()
super().keyPressEvent(event) # event.accept() is not working for me for some reasons
if len(self.toPlainText()) > 140:
self.setText(current_text)