python - Python Pyqt5 QPlainTextEdit 当用户离开检查值时
问题描述
我有一个很大的应用程序和一些QPlaintextEdit
s。当用户以他想要的输入结束时,我需要检查输入。如果检查失败,则应更新输入。
我想这是重点,但我没有找到正确的解决方案。
我想要实现的代码示例:
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))
解决方案
问题是您无法连接到 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()
推荐阅读
- docker - Docker 构建退出状态 127(处理时遇到错误:libc6:amd64)
- python - np.random.rand() 或 random.random()
- r - P 值热图 - 用 R 表示所有成对比较/p 值(例如,像彩色相关矩阵)
- c# - AsNoTracking() 是多余的吗?
- android - 导入 @react-native-google-signin/google-signin 后 react-native run-android 失败
- python - 如何在使用多处理进行网络抓取时对结果进行排序?
- java - 两个构造函数?
- sql-server - 使用 EF 核心代码优先在不同的文件组中创建表
- python - FastAPI:无需重启应用即可更新路由文档
- protobuf-net - 设置为 0 的整数被序列化(使用 protobuf-net)为空。有什么办法可以解决这个问题?