guess_the_number.py
import random import math import guess_the_number_GUI class GuessTheNumber: def __init__(self): self.guess_range = 100 self.secret_number = 0 self.attempts = 0 self.new_game() # helper function to start and restart the game def new_game(self): # initialize global variables used in your code here self.attempts = int(math.ceil(math.log(self.guess_range, 2))) self.secret_number = random.randrange(0, self.guess_range) print '-----------------' print 'New game started!' print 'Range is [0, %i)' % self.guess_range print 'You have', self.attempts, 'attempts' print 'Good luck!' print '-----------------' # define event handlers for control panel def range100(self): # button that changes the range to [0,100) and starts a new game self.guess_range = 100 self.new_game() def range1000(self): # button that changes the range to [0,1000) and starts a new game self.guess_range = 1000 self.new_game() def input_guess(self, inp): self.inp = int(inp) print 'Your guess is', self.inp if self.inp < self.secret_number: self.attempts -= 1 if self.attempts > 0: print 'Higher!' print self.attempts, 'attempts left.' elif self.inp == self.secret_number: print 'Correct!' print '' self.new_game() elif self.inp > 0: self.attempts -= 1 if self.attempts > 0: print 'Lower!' print self.attempts, 'attempts left.' if not self.attempts: print 'Secret numer is', self.secret_number print 'You loose! :(' print '' self.new_game() print '' guess_the_number_GUI.start_gui(GuessTheNumber())
guess_the_number_GUI.py
import sys from PyQt4 import QtGui, QtCore class GuessTheNumberGui(QtGui.QWidget): def __init__(self, game, parent=None): QtGui.QWidget.__init__(self, parent) self.gtn_game = game self.setWindowTitle('Guess the number!') self.setGeometry(900, 400, 320, 240) grid = QtGui.QGridLayout() self.range100_button = QtGui.QPushButton('Set range to [0 - 100)') self.range1000_button = QtGui.QPushButton('Set range to [0 - 1000)') self.guess_input_entry = QtGui.QLineEdit() grid.addWidget(self.range100_button, 0, 0) grid.addWidget(self.range1000_button, 1, 0) grid.addWidget(self.guess_input_entry, 2, 0) self.range100_button.clicked.connect(self.gtn_game.range100) self.range1000_button.clicked.connect(self.gtn_game.range1000) self.guess_input_entry.returnPressed.connect(self.gtn_game.input_guess) self.setLayout(grid) def start_gui(game): app = QtGui.QApplication(sys.argv) gui = GuessTheNumberGui(game) gui.show() sys.exit(app.exec_())
Вопрос: как при нажатии Enter передать методу gtn_game.input_guess значение указанное в QLineEdit, в качестве аргумента? С событием разобрался, это returnPressed, но вот как дальше быть, не знаю. Заранее благодарен за помощь.