如何使用Pyside重新进一步事件并将其传递给它



我拼命试图获得答案似乎是一个非常简单的问题。因此,我的主代码是一个具有QTextEdit的UI,我想限制字符量为140。我认为最好的方法是重新实现keyPressEventKeyReleaseEvent功能。

为此,我正在使用自定义文本编辑窗口小部件创建一堂课:

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的事件,当然说它没有长度。

我在做什么错?如何通过事件和争论?甚至可能吗?

我一直在阅读类似问题的答案的音调,但仍然不要得到答案。请帮助!

keyPressEvent只能接受两个参数: selfevent(按照您的意愿命名)。要访问已经在编辑器中编写的文本,您可以在使用event.accept()接受事件之前使用self.toPlainText()。因此,对于您的情况限制字符总计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)

最新更新