Nov-06-2018, 03:00 PM
I'm trying to write a mineweeper program in PyQt5
This is what I already have.
I still have 2 problems:
1* How do I detect a right mouse button click on a button? As you can see I already have a left mouse button click
2* I created a grid of buttons but I'm unable to remove the space between the buttons. How do I do that
I also don't understand the differece between
This is what I already have.
I still have 2 problems:
1* How do I detect a right mouse button click on a button? As you can see I already have a left mouse button click
2* I created a grid of buttons but I'm unable to remove the space between the buttons. How do I do that
I also don't understand the differece between
class Window(QDialog)and
class Window(QtWidgets.QMainWindow):
import sys from PyQt5 import QtWidgets, QtGui from PyQt5.QtWidgets import * from PyQt5.QtCore import * from functools import partial from random import randint class Window(QDialog): def __init__(self): super().__init__() self.setGeometry(50,50,600,300) self.setWindowTitle("Minesweeper") self.setWindowIcon(QtGui.QIcon('favicon.png')) self.initGame() self.mainPage() def mainPage(self): self.createGridLayout() windowLayout = QVBoxLayout() windowLayout.addWidget(self.horizontalGroupBox) self.setLayout(windowLayout) self.show() def initGame(self): self.initialArray=[[0 for i in range(10)]for j in range(10)] self.counterTurns=0 for column in range (0,10): for row in range (0,10): bomb=randint(0,6) if bomb==6: self.initialArray[row][column]=9 if row-1>=0 and self.initialArray[row-1][column]!=9: self.initialArray[row-1][column]+=1 if row+1<=9 and self.initialArray[row+1][column]!=9: self.initialArray[row+1][column]+=1 if column-1>=0 and self.initialArray[row][column-1]!=9: self.initialArray[row][column-1]+=1 if column+1<=9 and self.initialArray[row][column+1]!=9: self.initialArray[row][column+1]+=1 if row-1>=0 and column-1>=0 and self.initialArray[row-1][column-1]!=9: self.initialArray[row-1][column-1]+=1 if row+1<=9 and column-1>=0 and self.initialArray[row+1][column-1]!=9: self.initialArray[row+1][column-1]+=1 if row-1>=0 and column+1<=9 and self.initialArray[row-1][column+1]!=9: self.initialArray[row-1][column+1]+=1 if row+1<=9 and column+1<=9 and self.initialArray[row+1][column+1]!=9: self.initialArray[row+1][column+1]+=1 def createGridLayout(self): self.horizontalGroupBox=QGroupBox() layout=QGridLayout() self.button={} for column in range (0,10): for row in range (0,10): self.button[row,column]=QPushButton(self) self.button[row,column].setFixedHeight(20) self.button[row,column].setFixedWidth(20) self.button[row,column].setIcon(QtGui.QIcon('tile_plain.gif')) self.button[row,column].clicked.connect(partial(self.buttonPressed,row,column)) layout.addWidget(self.button[row,column],row,column) for row in self.initialArray: print (row) self.horizontalGroupBox.setLayout(layout) def buttonPressed(self,row,column): self.displayEmptyButtons(row,column) self.counterTurns+=1 print ('rij'+str(row)+'\nkolom'+str(column)) if self.initialArray[row][column]==9: print ('bomb!!!! ' + str(self.counterTurns)) game_busy=0 values=[1,2,3,4,5,6,7,8] for x in self.initialArray: print (x) if any(i in values for i in x): game_busy=1 if game_busy==0: print ('you won') def displayEmptyButtons(self,row,column): if self.initialArray[row][column]!=0: if self.initialArray[row][column]!=10: self.button[row,column].setText(str(self.initialArray[row][column])) self.initialArray[row][column]=10 else: if self.initialArray[row][column]!=10: self.button[row,column].setText(str(self.initialArray[row][column])) self.initialArray[row][column]=10 if row-1>=0: self.displayEmptyButtons(row-1,column) if row+1<=9: self.displayEmptyButtons(row+1,column) if column-1>=0: self.displayEmptyButtons(row,column-1) if column+1<=9: self.displayEmptyButtons(row,column+1) if row-1>=0 and column-1>=0: self.displayEmptyButtons(row-1,column-1) if row+1<=9 and column-1>=0: self.displayEmptyButtons(row+1,column-1) if row-1>=0 and column+1<=9: self.displayEmptyButtons(row-1,column+1) if row+1<=9 and column+1<=9: self.displayEmptyButtons(row+1,column+1) if __name__ == '__main__': app = QApplication(sys.argv) ex = Window() sys.exit(app.exec_())