gpt4 book ai didi

python - 如何检查 lineedit 是否获得焦点?

转载 作者:行者123 更新时间:2023-12-01 00:34:41 26 4
gpt4 key购买 nike

我有一个行编辑,其中我想要“bool”检查“if-statement”,如下面的代码所示:但是如何输入“单击的语法”来验证用户是否准备好输入?

if self.lineEdit."syntax for clicked for edit"(True):
{
"any code hear"
}

最佳答案

如果您想检测像 QLineEdit 这样的小部件何时接收或失去焦点,那么您必须覆盖 focusInEvent()focusOutEvent()分别有方法。

在下面的示例中,我创建了在这些事件中发出的信号:

from PyQt5 import QtCore, QtWidgets


class LineEdit(QtWidgets.QLineEdit):
focus_in_signal = QtCore.pyqtSignal()
focus_out_signal = QtCore.pyqtSignal()

def focusInEvent(self, event):
self.focus_in_signal.emit()
super().focusInEvent(event)

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


class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)

le = LineEdit()
le.focus_in_signal.connect(self.focus_in)
le.focus_out_signal.connect(self.focus_out)

lay = QtWidgets.QVBoxLayout(self)
lay.addWidget(QtWidgets.QLabel("Label"))
lay.addWidget(le)
lay.addWidget(QtWidgets.QPushButton("Button"))

@QtCore.pyqtSlot()
def focus_in(self):
print("focus in")

@QtCore.pyqtSlot()
def focus_out(self):
print("focus out")


if __name__ == "__main__":
import sys

app = QtWidgets.QApplication(sys.argv)

w = Widget()
w.show()

sys.exit(app.exec_())

另一种方法是使用 focusChanged()来自 QApplication 的信号:

from PyQt5 import QtWidgets


class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)

QtWidgets.QApplication.instance().focusChanged.connect(self.on_focusChanged)

self.le = QtWidgets.QLineEdit()

lay = QtWidgets.QVBoxLayout(self)
lay.addWidget(QtWidgets.QLabel("Label"))
lay.addWidget(self.le)
lay.addWidget(QtWidgets.QPushButton("Button"))

@QtCore.pyqtSlot("QWidget*", "QWidget*")
def on_focusChanged(self, old, now):
if self.le == now:
print("self.le received focus")
elif self.le == old:
print("self.le lost focus")


if __name__ == "__main__":
import sys

app = QtWidgets.QApplication(sys.argv)

w = Widget()
w.show()

sys.exit(app.exec_())
<小时/>

如果您想同步验证小部件是否具有焦点,您可以使用 hasFocus()方法。

关于python - 如何检查 lineedit 是否获得焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57893124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com