我已经为游戏创建了一个应用程序,易于上手。在这种游戏中,系统会随机选择一个数字,而玩家(玩家)会尝试找出该数字。一切都快完成了。该应用程序由QLineEdit
,标签和三个按钮组成。一旦应用程序告知玩家想要的数字范围,他/她将输入bet_number并单击“播放”按钮。然后,根据这个数字,他/她会收到一条消息,告知想要的数字离bet_number多近或远。
但是我发现单击按钮有点恶心。相反,我想使用输入键进行播放。因此,要实现这一目标,可以归结为以下两个问题:
QLineEdit
何时检测到按下Enter键)?这样,我将正确编码以指向play方法。 最佳答案
对于 QLineEdit
,连接到 returnPressed
信号。
或者,如果在 setAutoDefault
上使用 QPushButton
方法,则在聚焦的 clicked
上按Enter时,会发出 QPushButton
信号:
#!/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_())