Détection d'entrée sur un Qlineeedit ou un QPushButton
j'ai construit une application pour un jeu, simple à démarrer. C'est un jeu dans lequel le système choisit au hasard un nombre et un gamer (joueur) essaie de trouver le nombre. Tout est presque fini. L'application se compose d'un QLineEdit
, une étiquette et trois boutons. Une fois que l'application indique au joueur la portée du nombre voulu, il / elle tape un bet_number et clique sur le bouton play. Et selon ce nombre, il / elle reçoit un message sur la façon dont proche ou loin le nombre voulu est éloigné de la bet_number.
Mais je trouve ça un peu dégoûtant de cliquer sur un bouton. Au lieu de cela je veux utiliser entrer la touche pour jouer. Pour y parvenir, il faut donc se poser deux questions spécifiques:
Comment changer L'utilisation de Enter pour jouer (je veux dire que j'ai besoin de savoir quand
QLineEdit
détecte la touche entrée est pressée)? De cette façon, je vais coder correctement pour pointer la méthode de jeu.si le bouton play a la mise au point, comment faire vous utilisez la touche Entrée sur ce bouton? (Bouton accepter la touche Entrée)
2 réponses
pour le QLineEdit
se connecter à l' returnPressed
signal, si vous utilisez le setAutoDefault
dans votre QPushButton
s vous émettez l' clicked
signal quand Entrée est pressé sur un 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_())
QLineEdit
émettra le signal returnPressed()
chaque fois que l'utilisateur appuie sur la touche Entrée:http://qt-project.org/doc/qt-4.8/qlineedit.html#signals