首页 > 解决方案 > Python Pyqt5 QPlainTextEdit 当用户离开检查值时

问题描述

我有一个很大的应用程序和一些QPlaintextEdits。当用户以他想要的输入结束时,我需要检查输入。如果检查失败,则应更新输入。

我想这是重点,但我没有找到正确的解决方案。

我想要实现的代码示例:

self.plainTextEdit_2.focusOutEvent(lambda:self.check_input(Dialog14)) #### or something like this

def check_input(self,Dialog14):
    if int(self.plainTextEdit_2.toPlainText()) > num_pages:
        self.plainTextEdit_2.setPlainText(str(num_pages))

标签: pythonpyqt5

解决方案


问题是您无法连接到 QTextEdit 的 focusOutEvent。它不是信号,而是事件处理程序。您必须重写该类并从事件处理程序发出信号。

    self.plainTextEdit = CustomTextEdit()
    self.plainTextEdit.focus_out.connect(lambda:self.check_input(Dialog14))


class CustomTextEdit(QtWidgets.QTextEdit):

    focus_out = QtCore.pyqtSignal()

    def __init__(self):
        super().__init__()

    def focusOutEvent(self, event):
        super().focusOutEvent(event)
        self.focus_out.emit()

推荐阅读