надо написать маленький код: окно где предлагается выбрать количество цветов, а затем и сами цвета. Флаг с рандомными цветами получился, перекрасить при выборе цвета тоже, а вот именно это задание-нет. Сама проблема в том, что при выборе второго цвета, окно закрывется
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QInputDialog, QColorDialog
from PyQt5.QtGui import QPainter
import copy
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
self.draw = None
self.base = [80, 80, 120, 30]
def initUI(self):
self.setGeometry(300, 300, 500, 500)
self.setWindowTitle('Flag')
self.button_1 = QPushButton(self)
self.button_1.move(20, 40)
self.button_1.setText("выбери кол-во цветов")
self.button_1.clicked.connect(self.run)
def run(self):
i, okBtnPressed = QInputDialog.getInt(self, "введите число", "сколько цветов?", 2, 1, 10, 1)
if okBtnPressed:
self.draw = i
self.flag = None
def paintEvent(self, event):
if self.draw:
qp = QPainter()
qp.begin(self)
self.drawFlag(qp)
qp.end()
def drawFlag(self, qp):
base = copy.copy(self.base)
for i in range(self.draw):
color = QColorDialog.getColor()
if color.isValid():
qp.setBrush(color.name())
qp.drawRect(*base)
base[1] += 30
self.draw = None
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())