检测QLineEdit或QPushButton上的输入

ark*_*o24 28 qt pyqt keypress qlineedit python-3.x

我为游戏构建了一个应用程序,开始很简单.这是一个系统随机选择一个数字并且游戏玩家(玩家)试图找出数字的游戏.一切都快完成了.该应用程序包括QLineEdit一个标签和三个按钮.一旦应用告诉玩家所需号码的范围,他/她键入bet_number并点击播放按钮.并且根据该数字,他/她得到关于所需数字离bet_number有多远或多远的消息.

但我觉得单击一个按钮有点恶心.相反,我想使用Enter键来玩.所以要实现这一点,具体来说有两个问题:

  1. 如何改变使用Enter来播放(我的意思是我需要知道何时QLineEdit检测到输入键被按下)?通过这种方式,我将正确编码以指向播放方法.

  2. 如果播放按钮有焦点,那么如何在此按钮上使用回车键?(make Button接受Enter键)

小智 44

对于QLineEdit连接returnPressed信号,如果您使用s setAutoDefault上的方法,则在按下聚焦时QPushButton发出clicked信号:EnterQPushButton

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)

from PyQt4 import QtGui, QtCore

class MyWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self.pushButtonOK = QtGui.QPushButton(self)
        self.pushButtonOK.setText("OK")
        self.pushButtonOK.clicked.connect(self.on_pushButtonOK_clicked)
        self.pushButtonOK.setAutoDefault(True)

        self.lineEditNumber = QtGui.QLineEdit(self)
        self.lineEditNumber.returnPressed.connect(self.pushButtonOK.click)

        self.layoutHorizontal = QtGui.QHBoxLayout(self)
        self.layoutHorizontal.addWidget(self.pushButtonOK)
        self.layoutHorizontal.addWidget(self.lineEditNumber)

    @QtCore.pyqtSlot()
    def on_pushButtonOK_clicked(self):
        inputNumber = self.lineEditNumber.text()
        if inputNumber.isdigit():
            info = "You selected `{0}`"

        else:
            info = "Please select a number, `{0}` isn't valid!"

        print info.format(inputNumber)

if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.show()

    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

  • 考虑通过单击复选标记来接受此答案。 (2认同)

rai*_*ner 12

QLineEditreturnPressed()每当用户按下回车键时,它将发出信号:http://qt-project.org/doc/qt-4.8/qlineedit.html#signals.您可以将此信号连接到按钮的click()插槽,也可以直接呼叫按钮clicked()信号所连接的任何信号.