Не добавляется виджет на главное окно PyQt5

Пытаюсь создать крестики-нолики на PyQt5. Столкнулся с проблемой: QLabel не добавляется на главное окно.

Как его добавить?

P.S. Часть кода с QLabel я отметил комментарием.


import sys
from PyQt5.QtWidgets import (QPushButton,QWidget, QHBoxLayout, QLabel, QApplication, QFileDialog)
from PyQt5.QtGui import QPixmap, QIcon
from PyQt5 import QtCore, Qt
import Engine

class Example (QWidget):
    def __init__(self):
        self.count = 0
        super ().__init__()
        self.initUI ()

    def initUI(self):
        self.button00 = QPushButton(self)
        self.button00.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button00.setGeometry(90,90,140,140)

        self.button01 = QPushButton(self)
        self.button01.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button01.setGeometry(230, 90, 140, 140)

        self.button02 = QPushButton(self)
        self.button02.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button02.setGeometry(370, 90, 140, 140)

        self.button10 = QPushButton(self)
        self.button10.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button10.setGeometry(90, 230, 140, 140)

        self.button11 = QPushButton(self)
        self.button11.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button11.setGeometry(230, 230, 140, 140)

        self.button12 = QPushButton(self)
        self.button12.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button12.setGeometry(370, 230, 140, 140)

        self.button20 = QPushButton(self)
        self.button20.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button20.setGeometry(90, 370, 140, 140)

        self.button21 = QPushButton(self)
        self.button21.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button21.setGeometry(230, 370, 140, 140)

        self.button22 = QPushButton(self)
        self.button22.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button22.setGeometry(370, 370, 140, 140)

        self.resize(600,600)
        self.move (300, 200)
        self.setStyleSheet("background-color: rgb(0, 0, 0);")
        self.setWindowTitle ('Tic-Tac-Toe')
        self.setWindowIcon(QIcon("apparate.jpg"))
        self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowMaximizeButtonHint)  # Так мы убираем возможность нажать кнопку развернуть окно
        self.setFixedSize(self.size())
        self.show ()

    def action(self):
        self.button00.clicked.connect(lambda: self.turn(self.button00.geometry()))
        self.button01.clicked.connect(lambda: self.turn(self.button01.geometry()))
        self.button02.clicked.connect(lambda: self.turn(self.button02.geometry()))
        self.button10.clicked.connect(lambda: self.turn(self.button10.geometry()))
        self.button11.clicked.connect(lambda: self.turn(self.button11.geometry()))
        self.button12.clicked.connect(lambda: self.turn(self.button12.geometry()))
        self.button20.clicked.connect(lambda: self.turn(self.button20.geometry()))
        self.button21.clicked.connect(lambda: self.turn(self.button21.geometry()))
        self.button22.clicked.connect(lambda: self.turn(self.button22.geometry()))

    def turn(self, button_geometry):
        self.count+=1 

        if self.count%2 == 1:
            self.label = QLabel(self) #Вот эта часть кода не работает
            self.label.setGeometry(button_geometry)
            self.label.setStyleSheet("background-color: rgb(0, 0, 0);")

        if self.count%2 == 0:
            pass

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example ()
    ex.action()
    sys.exit(app.exec_())

Ответы (1 шт):

Автор решения: S. Nick

Добавьте self.label.show()

import sys
from PyQt5.QtWidgets import (QPushButton,QWidget, QHBoxLayout, QLabel, \
    QApplication, QFileDialog)
from PyQt5.QtGui import QPixmap, QIcon
from PyQt5 import QtCore                                         # ??? , Qt

# ??? import Engine


class Example(QWidget):
    def __init__(self):
        self.count = 0
        super ().__init__()
        self.initUI ()

    def initUI(self):
        self.button00 = QPushButton(self)
        self.button00.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button00.setGeometry(90,90,140,140)

        self.button01 = QPushButton(self)
        self.button01.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button01.setGeometry(230, 90, 140, 140)

        self.button02 = QPushButton(self)
        self.button02.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button02.setGeometry(370, 90, 140, 140)

        self.button10 = QPushButton(self)
        self.button10.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button10.setGeometry(90, 230, 140, 140)

        self.button11 = QPushButton(self)
        self.button11.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button11.setGeometry(230, 230, 140, 140)

        self.button12 = QPushButton(self)
        self.button12.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button12.setGeometry(370, 230, 140, 140)

        self.button20 = QPushButton(self)
        self.button20.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button20.setGeometry(90, 370, 140, 140)

        self.button21 = QPushButton(self)
        self.button21.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button21.setGeometry(230, 370, 140, 140)

        self.button22 = QPushButton(self)
        self.button22.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.button22.setGeometry(370, 370, 140, 140)

        self.resize(600,600)
        self.move (300, 200)
        self.setStyleSheet("background-color: rgb(0, 0, 0);")
        self.setWindowTitle ('Tic-Tac-Toe')
        self.setWindowIcon(QIcon("apparate.jpg"))
        self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowMaximizeButtonHint)  # Так мы убираем возможность нажать кнопку развернуть окно
        self.setFixedSize(self.size())
        self.show ()

    def action(self):
        self.button00.clicked.connect(lambda: self.turn(self.button00.geometry()))
        self.button01.clicked.connect(lambda: self.turn(self.button01.geometry()))
        self.button02.clicked.connect(lambda: self.turn(self.button02.geometry()))
        self.button10.clicked.connect(lambda: self.turn(self.button10.geometry()))
        self.button11.clicked.connect(lambda: self.turn(self.button11.geometry()))
        self.button12.clicked.connect(lambda: self.turn(self.button12.geometry()))
        self.button20.clicked.connect(lambda: self.turn(self.button20.geometry()))
        self.button21.clicked.connect(lambda: self.turn(self.button21.geometry()))
        self.button22.clicked.connect(lambda: self.turn(self.button22.geometry()))

    def turn(self, button_geometry):
        self.count += 1 
        if self.count%2 == 1:
        
#            self.label = QLabel(self)               # Вот эта часть кода не работает
            self.label = QLabel('X', self, alignment=QtCore.Qt.AlignCenter)             
            
            self.label.setGeometry(button_geometry)
            self.label.setStyleSheet("""
                background-color: #2C2891;
                color: #FFFD95;
                font-size: 42px;
            """)
            
            self.label.show()                                      # <---- 

        if self.count%2 == 0:
            pass
            

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.action()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка