如何使用PySid重新实现事件并向其传递和参数

2024-04-18 14:10:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我拼命想找到一个似乎很简单的问题的答案。所以,我有我的主代码,它是一个有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事件一样,当然它说它没有长度

我做错什么了?如何传递事件和参数?有可能吗

我一直在读一个类似问题的答案,但仍然没有得到答案。求求你,救命


Tags: 方法答案代码textselfui参数事件
1条回答
网友
1楼 · 发布于 2024-04-18 14:10:38

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)

相关问题 更多 >