PyQt:如何获得QLineEdit获取焦点的信号?

3
这个特定的窗口有两个QLineEdit:一个名为“User”,另一个名为“Password”。它们下面有一个带有许多QPushButtons的键盘。现在,我必须告诉与这些按钮连接的方法,在所选的QLineEdit中打印相应的字母或数字,但我很难获得当前选择的QLineEdit的信号。

我该如何获得该信号?应用程序以“User”为焦点启动:self.User.setFocus()

谢谢。

1个回答

4

默认情况下,单击按钮时它们会获得焦点。您可以通过将其焦点策略设置为NoFocus来更改此项。这样,当用户单击按钮时,您的行编辑不会失去焦点。

 button.setFocusPolicy(QtCore.Qt.NoFocus)

只要在按钮被点击时,lineedit 有焦点,您就可以在按钮处理程序中像这样获取焦点小部件:
lineedit = QtGui.QApplication.focusWidget()

您可以检查一下当前焦点所在的widget是否是这两个LineEdit widget之一,然后相应地更新它们的文本内容。

非常感谢,这非常有帮助。使用lineedit = QtGui.QApplication.focusWidget(),我得到了:<PyQt4.QtGui.QLineEdit object at 0x746e6df0>,那么我该如何获取该对象的名称? - Diogo Magalhães
哦,我明白了,只需要在代码行中添加 .objectName() 就可以了,就像这样 lineedit = QtGui.QApplication.focusWidget().objectName() - Diogo Magalhães

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接