Стал учаÑтником , чтобы уÑпокоить моего Ñтудента группы ИСП12 Михаила Дёмина. Ð’Ñегда рад завеÑти пытливых кундров на подвиги. Преподаю в УльÑновÑком Ðлектромехе информатику. Буду поÑильно учаÑтвовать - времени, к Ñожалению, нет ÑовÑем, приходитÑÑ ÐµÑ‰Ñ‘ админить пару Ñерверных шкафов и Ñотню -другую юзаков. Тема Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ в бокÑах запала. from PyQt5 import QtCore, QtWidgets, QtGui class Label(QtWidgets.QLabel): clicked = QtCore.pyqtSignal() def init(self, picture, *args, **kwargs): super(Label, self).init(*args, **kwargs) self.setMaximumSize(140, 140) self.setMinimumSize(140, 140) self.radius = 10 self.target = QtGui.QPixmap(self.size()) self.target.fill(QtCore.Qt.transparent) p = QtGui.QPixmap(picture).scaled(140, 140, QtCore.Qt.KeepAspectRatioByExpanding, QtCore.Qt.SmoothTransformation) painter = QtGui.QPainter(self.target) painter.setRenderHint(QtGui.QPainter.Antialiasing, True) painter.setRenderHint(QtGui.QPainter.HighQualityAntialiasing, True) painter.setRenderHint(QtGui.QPainter.SmoothPixmapTransform, True) path = QtGui.QPainterPath() path.addRoundedRect(0, 0, self.width(), self.height(), self.radius, self.radius) painter.setClipPath(path) painter.drawPixmap(0, 0, p) self.setPixmap(self.target) def mouseReleaseEvent(self, event): self.clicked.emit() class MyWindow(QtWidgets.QWidget): def init(self, parent=None): super().init(parent) self.box1 = QtWidgets.QGridLayout() self.button = QtWidgets.QPushButton(`Button`) self.button.setFixedSize(60, 60) # <--— self.box1.addWidget(self.button, 0, 1) self.new_button = QtWidgets.QPushButton(`New Button`) self.box2 = QtWidgets.QGridLayout() self.label1 = Label(`im.png`) self.label2 = Label(`Ok.png`) self.label1.clicked.connect(self.click) self.box2.addWidget(self.label1, 0, 0) self.box2.addWidget(self.label2, 0, 1) self.box1.addLayout(self.box2, 0, 0) self.setLayout(self.box1) def click(self): for row in range(self.box2.rowCount()): for col in range(self.box2.columnCount()): w = self.box2.itemAtPosition(row, col).widget() w.deleteLater() self.box2.addWidget(self.new_button, 0, 0, 1, 1, QtCore.Qt.AlignCenter) if name == `main`: import sys app = QtWidgets.QApplication(sys.argv) window = MyWindow() window.setWindowTitle(`Как задать кнопке PyQt5 преимущеÑтвенный размер?`) window.show() sys.exit(app.exec_())
©