TI/Skrypty z zajęć/pyqt5

Z Brain-wiki
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
import numpy as np

licznik = 0
znaki = np.array([["","",""],["","",""],["","",""]])
znaki_old = znaki.copy()

class NaszButton(QtWidgets.QPushButton):
    def __init__(self,i,j,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.setGeometry(QtCore.QRect(i*200, j*200, 200, 200))
        self.setText("")
        self.clicked.connect(self.clickniecie)
        self.i = i
        self.j = j
    
    def clickniecie(self):
        global licznik
        global znaki
        global znaki_old
        if znaki[self.i][self.j] == "":
            licznik += 1
            znaki_old = znaki
            znaki = znaki_old.copy()
            if licznik%2:
                znaki[self.i][self.j] = 'X'
            else:
                znaki[self.i][self.j] = 'O'
        self.setText(str(znaki[self.i][self.j]))

class NaszWidget(QtWidgets.QWidget):   
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.setObjectName("PlusMinus")
        self.resize(600, 800)
        self.buttony = []
        for i in range(3):
            for j in range(3):
                self.buttony.append(NaszButton(i,j,self))
        self.czyszczenie = QtWidgets.QPushButton(self)
        self.czyszczenie.setGeometry(QtCore.QRect(0, 600, 600, 200))
        self.czyszczenie.setText("czyszczenie")
        self.czyszczenie.clicked.connect(self.czysc)
        self.show()

    def czysc(self):
        global znaki
        global licznik
        znaki = znaki_old.copy()
        licznik -=1
        for button in self.buttony:
            button.setText(str(znaki[button.i][button.j]))



if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    PlusMinus = NaszWidget()
    sys.exit(app.exec_())