import sys from PyQt5.QtWidgets import QApplication, QWidget, QFrame, QPushButton, QGridLayout, QSplitter from PyQt5.QtGui import QPixmap, QColor, QPainter from PyQt5.QtCore import Qt class Splitter(QSplitter): def __init__(self, napr, frame): super().__init__(napr) self.frame = frame def resizeEvent(self, e): self.frame.setSize(self.width(), self.height()) class Frame(QFrame): def __init__(self, parent): super().__init__(parent) self.parent = parent self.initUI() def initUI(self): self.pix = QPixmap(300,300) self.pix.fill(QColor('white')) def paintEvent(self, e): p = QPainter(self) p.drawPixmap(0,0, self.pix) def mousePressEvent(self, e): if e.button() == Qt.LeftButton: self.goEllipse(e) def mouseMoveEvent(self, e): self.goEllipse(e) def goEllipse(self, e): p = QPainter(self.pix) p.drawEllipse(e.pos(), 10, 10) self.update() def setSize(self, w, h): self.setSize(w,h) self.pix = QPixmap(w,h) class W(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.resize(400,800) self.frame = QFrame(self) self.splitter = Splitter(Qt.Horizontal, self.frame) self.splitter.addWidget(self.splitter) layout = QGridLayout() layout.addWidget(self.splitter, 0,0) self.setLayout(self.layout) self.show() app = QApplication(sys.argv) w=W() sys.exit(app.exec_())
Я хочу, чтобы при изменении размеров self.splitter менялся так же self.frame и соответственно self.pix в классе Frame. Но при запуске даже не открывается окно, в чём проблема?