def __init__(self): super(MainWindow, self).__init__() # Variables: self.game = Game.TicTacToe(Players.HumanPlayer(), Players.QPlayer()) self.game.returnMoveToGUI = self.drawMoveOnBoard self.game.signalGUItoReset = self.informUserGameEnded # Qt window self.setWindowTitle("Tic Tac Toe Game") self.buttongrid = QtWidgets.QWidget(self) self.setCentralWidget(self.buttongrid) self.frame = QtWidgets.QFrame(self.buttongrid) self.frame.setGeometry(QtCore.QRect(0, 0, 3*buttonWidth, int(3.5*buttonWidth))) self.frame.setFrameShape(QtWidgets.QFrame.NoFrame) self.frame.setFrameShadow(QtWidgets.QFrame.Plain) self.frame.setLineWidth(0) self.grid = QtWidgets.QGridLayout(self.frame) # Start a new game self.newGameButton = QtWidgets.QPushButton("New Game") self.newGameButton.setMinimumSize(QtCore.QSize(buttonWidth, 8)) self.newGameButton.clicked.connect(self.reset) self.grid.addWidget(self.newGameButton, 0, 0) # Find all player classes: playerClasses = [x for x in dir(Players) if isclass(getattr(Players, x)) and 'Player' in x and 'Basic' not in x and 'Brain' not in x] self.choosePlayerComboBox = QtWidgets.QComboBox() for player in playerClasses: self.choosePlayerComboBox.addItem(player) self.choosePlayerComboBox.setMinimumSize(QtCore.QSize(buttonWidth, 8)) self.choosePlayerComboBox.setCurrentIndex(0) self.choosePlayerComboBox.activated.connect(self.loadNewPlayer) self.grid.addWidget(self.choosePlayerComboBox, 0, 1) # Add game buttons for i in range(0,self.game._rows): for j in range(0, self.game._cols): newButton = TicTacToeButton((i,j), self.game.gameIsBusy, self.game.play, self.game.humanPlayerMoved) newButton.setFont(QtGui.QFont('Helvetica', 60)) self.grid.addWidget(newButton, i+1, j) self.setGeometry(300, 300, 3*buttonWidth + 5, 3*buttonHeight + 60)