-
오목게임 만들기-22.06.03~22.06.07파이썬 2022. 6. 7. 19:12728x90

검색 Tip : pyqt qlabel pixmap
아그런데 label은 이벤트가 안먹히네....버튼으로 만들어보자
import sys from PyQt5 import uic from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel from PyQt5.Qt import QPixmap form_class = uic.loadUiType("myomok01.ui")[0] class MainClass(QMainWindow, form_class): def __init__(self) : QMainWindow.__init__(self) self.setupUi(self) pixmap = QPixmap('0.png') mylbl = QLabel("sdfs",self) mylbl.setPixmap(pixmap) mylbl2 = QLabel("567",self) mylbl2.move(40,0) mylbl2.setPixmap(pixmap) self.show() self.pb.clicked.connect(self.myclick) self.lbl.clicked.connect(self.mychange) def mychange(self): print("mychange") def myclick(self): self.lbl.setText("Good Evening") if __name__ == "__main__" : app = QApplication(sys.argv) window = MainClass() app.exec_()=>안먹힘!!!
버튼으로 만들기


다시 40, 40 으로 바꿔주기


def printerButton(self,tab_name): self.printButton = QtGui.QPushButton(tab_name) self.printButton.setIcon(QtGui.QIcon('icons/printer.tif')) self.printButton.setIconSize(QtCore.QSize(130,130)) self.printButton.setGeometry(QtCore.QRect(1030, 500, 161, 61))10,10으로 한것(myomok02.py)
import sys from PyQt5 import uic, QtGui, QtCore from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton from PyQt5.Qt import QPixmap, QMessageBox from _ast import If form_class = uic.loadUiType("myomok02.ui")[0] class MainClass(QMainWindow, form_class): def __init__(self) : QMainWindow.__init__(self) self.setupUi(self) self.flag_wb = True self.flag_over = False self.arr2d = [ [0,0,0,0,0, 0,0,0,0,0], [0,0,0,0,0, 0,0,0,0,0], [0,0,0,0,0, 0,0,0,0,0], [0,0,0,0,0, 0,0,0,0,0], [0,0,0,0,0, 0,0,0,0,0], [0,0,0,0,0, 0,0,0,0,0], [0,0,0,0,0, 0,0,0,0,0], [0,0,0,0,0, 0,0,0,0,0], [0,0,0,0,0, 0,0,0,0,0], [0,0,0,0,0, 0,0,0,0,0] ] self.dol2d = [] for i in range(10): line = [] for j in range(10): doll = QPushButton("",self) doll.setIcon(QtGui.QIcon('0.png')) doll.setIconSize(QtCore.QSize(40,40)) doll.setToolTip("{},{}".format(i,j)) doll.setGeometry(QtCore.QRect(j*40, i*40, 40, 40)) doll.clicked.connect(self.myclick) line.append(doll) self.dol2d.append(line) self.pb.clicked.connect(self.myreset) self.show() self.myrender() def myreset(self): self.flag_over = False self.flag_wb = True for i in range(10): for j in range(10): self.arr2d[i][j]=0 self.myrender() def myrender(self): for i in range(10): for j in range(10): if self.arr2d[i][j] == 0: self.dol2d[i][j].setIcon(QtGui.QIcon('0.png')) if self.arr2d[i][j] == 1: self.dol2d[i][j].setIcon(QtGui.QIcon('1.png')) if self.arr2d[i][j] == 2: self.dol2d[i][j].setIcon(QtGui.QIcon('2.png')) def checkRI(self,i,j,stone): cnt = 0 try: while True: j += 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkUP(self,i,j,stone): cnt = 0 try: while True: i -= 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkDW(self,i,j,stone): cnt = 0 try: while True: i += 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkLE(self,i,j,stone): cnt = 0 try: while True: j -= 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkUR(self,i,j,stone): cnt = 0 try: while True: i -= 1 j += 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkUL(self,i,j,stone): cnt = 0 try: while True: i -= 1 j -= 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkDR(self,i,j,stone): cnt = 0 try: while True: i += 1 j += 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkDL(self,i,j,stone): cnt = 0 try: while True: i += 1 j -= 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def myclick(self): if self.flag_over: return str_ij = self.sender().toolTip() arr_ij = str_ij.split(",") i = int(arr_ij[0]) j = int(arr_ij[1]) if self.arr2d[i][j]>0: return stone = -1 if self.flag_wb : self.arr2d[i][j] = 1 stone = 1 else: self.arr2d[i][j] = 2 stone = 2 up = self.checkUP(i,j,stone) dw = self.checkDW(i,j,stone) ri = self.checkRI(i,j,stone) le = self.checkLE(i,j,stone) ur = self.checkUR(i,j,stone) ul = self.checkUL(i,j,stone) dr = self.checkDR(i,j,stone) dl = self.checkDL(i,j,stone) d1= up + dw + 1 d2= ur + dl + 1 d3= ri + le + 1 d4= ul + dr + 1 self.myrender() if d1 == 5 or d2 == 5 or d3 == 5 or d4 == 5: if self.flag_wb: QMessageBox.about(self,'Omok',"백돌승리") else : QMessageBox.about(self,'Omok',"흑돌승리") self.flag_over = True self.flag_wb = not self.flag_wb if __name__ == "__main__" : app = QApplication(sys.argv) window = MainClass() app.exec_()
19.19로 한것(myomok19.py)
import sys from PyQt5 import uic, QtGui, QtCore from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton from PyQt5.Qt import QPixmap, QMessageBox form_class = uic.loadUiType("myomok19.ui")[0] class MainClass(QMainWindow, form_class): def __init__(self) : QMainWindow.__init__(self) self.setupUi(self) self.flag_wb = True self.flag_over = False self.arr2d = [ [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0], [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0] ] self.dol2d = [] for i in range(19): line = [] for j in range(19): doll = QPushButton("",self) doll.setIcon(QtGui.QIcon('0.png')) doll.setIconSize(QtCore.QSize(40,40)) doll.setToolTip("{},{}".format(i,j)) doll.setGeometry(QtCore.QRect(j*40, i*40, 40, 40)) doll.clicked.connect(self.myclick) line.append(doll) self.dol2d.append(line) self.pb.clicked.connect(self.myreset) self.show() self.myrender() def myreset(self): self.flag_over = False self.flag_wb = True for i in range(19): for j in range(19): self.arr2d[i][j]=0 self.myrender() def myrender(self): for i in range(19): for j in range(19): if self.arr2d[i][j] == 0: self.dol2d[i][j].setIcon(QtGui.QIcon('0.png')) if self.arr2d[i][j] == 1: self.dol2d[i][j].setIcon(QtGui.QIcon('1.png')) if self.arr2d[i][j] == 2: self.dol2d[i][j].setIcon(QtGui.QIcon('2.png')) def checkRI(self,i,j,stone): cnt = 0 try: while True: j += 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkUP(self,i,j,stone): cnt = 0 try: while True: i -= 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkDW(self,i,j,stone): cnt = 0 try: while True: i += 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkLE(self,i,j,stone): cnt = 0 try: while True: j -= 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkUR(self,i,j,stone): cnt = 0 try: while True: i -= 1 j += 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkUL(self,i,j,stone): cnt = 0 try: while True: i -= 1 j -= 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkDR(self,i,j,stone): cnt = 0 try: while True: i += 1 j += 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def checkDL(self,i,j,stone): cnt = 0 try: while True: i += 1 j -= 1 if i < 0: return cnt if j < 0: return cnt if self.arr2d[i][j]==stone: cnt += 1 else: return cnt except: return cnt def myclick(self): if self.flag_over: return str_ij = self.sender().toolTip() arr_ij = str_ij.split(",") i = int(arr_ij[0]) j = int(arr_ij[1]) if self.arr2d[i][j]>0: return stone = -1 if self.flag_wb : self.arr2d[i][j] = 1 stone = 1 else: self.arr2d[i][j] = 2 stone = 2 up = self.checkUP(i,j,stone) dw = self.checkDW(i,j,stone) ri = self.checkRI(i,j,stone) le = self.checkLE(i,j,stone) ur = self.checkUR(i,j,stone) ul = self.checkUL(i,j,stone) dr = self.checkDR(i,j,stone) dl = self.checkDL(i,j,stone) d1= up + dw + 1 d2= ur + dl + 1 d3= ri + le + 1 d4= ul + dr + 1 self.myrender() if d1 == 5 or d2 == 5 or d3 == 5 or d4 == 5: if self.flag_wb: QMessageBox.about(self,'Omok',"백돌승리") else : QMessageBox.about(self,'Omok',"흑돌승리") self.flag_over = True self.flag_wb = not self.flag_wb if __name__ == "__main__" : app = QApplication(sys.argv) window = MainClass() app.exec_()728x90'파이썬' 카테고리의 다른 글
Crawling 2 , fast (8) 2022.06.16 Python Flask CORS ,Crawling (0) 2022.06.14 Flask에서 Ajax ,axios예제 (0) 2022.06.13 pymysql -22.06.08-22.06.09 (0) 2022.06.09 파이썬 -pyqt (0) 2022.06.03