Не добавляется виджет на главное окно 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_())
