Как избежать перекрытия в pyqt5 - PullRequest
0 голосов
/ 07 августа 2020

Итак, у меня есть собственный класс кнопок, я пытаюсь динамически добавлять кнопки внутри группового окна с макетом сетки, но в 3-й строке продолжает перекрываться, есть ли предложения? заранее спасибо. Мне нужно написать еще, потому что, похоже, моя информация не ле git, пожалуйста, сколько слов мне нужно написать, чтобы мой пост был загружен?

Образ

dos.py
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import (QMainWindow, QApplication, QPushButton, QGridLayout, QWidget, 
QHBoxLayout, QLabel, QVBoxLayout)

class BotonDePc(QPushButton):
  def __init__(self, parent):
    super().__init__()

    self.initUI()

def initUI(self):

    self.setMinimumSize(QtCore.QSize(150, 150))
    self.setMaximumSize(QtCore.QSize(150, 150))

class Ui_MainWindow(object):
 def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(623, 557)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
    self.horizontalLayout.setObjectName("horizontalLayout")
    self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
    sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, 
 QtWidgets.QSizePolicy.Preferred)
    sizePolicy.setHorizontalStretch(0)
    sizePolicy.setVerticalStretch(0)
    sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth())
    self.groupBox.setSizePolicy(sizePolicy)
    self.groupBox.setAcceptDrops(False)
    self.groupBox.setObjectName("groupBox")
    self.gridLayout = QtWidgets.QGridLayout(self.groupBox)
    self.gridLayout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
    self.gridLayout.setObjectName("gridLayout")
    self.pushButton = QtWidgets.QPushButton(self.groupBox)
    self.pushButton.setEnabled(True)
    sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
    sizePolicy.setHorizontalStretch(0)
    sizePolicy.setVerticalStretch(0)
    sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
    self.pushButton.setSizePolicy(sizePolicy)
    self.pushButton.setMinimumSize(QtCore.QSize(150, 150))
    self.pushButton.setMaximumSize(QtCore.QSize(150, 150))
    self.pushButton.setObjectName("pushButton")
    self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1)
    self.pushButton_2 = QtWidgets.QPushButton(self.groupBox)
    sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)
    sizePolicy.setHorizontalStretch(0)
    sizePolicy.setVerticalStretch(200)
    sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth())
    self.pushButton_2.setSizePolicy(sizePolicy)
    self.pushButton_2.setMinimumSize(QtCore.QSize(150, 150))
    self.pushButton_2.setMaximumSize(QtCore.QSize(150, 150))
    self.pushButton_2.setObjectName("pushButton_2")
    self.gridLayout.addWidget(self.pushButton_2, 0, 1, 1, 1)
    self.pushButton_3 = QtWidgets.QPushButton(self.groupBox)
    sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)
    sizePolicy.setHorizontalStretch(0)
    sizePolicy.setVerticalStretch(200)
    sizePolicy.setHeightForWidth(self.pushButton_3.sizePolicy().hasHeightForWidth())
    self.pushButton_3.setSizePolicy(sizePolicy)
    self.pushButton_3.setMinimumSize(QtCore.QSize(150, 150))
    self.pushButton_3.setMaximumSize(QtCore.QSize(150, 150))
    self.pushButton_3.setObjectName("pushButton_3")
    self.gridLayout.addWidget(self.pushButton_3, 0, 2, 1, 1)
    self.horizontalLayout.addWidget(self.groupBox)
    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtWidgets.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 623, 25))
    self.menubar.setObjectName("menubar")
    MainWindow.setMenuBar(self.menubar)
    self.statusbar = QtWidgets.QStatusBar(MainWindow)
    self.statusbar.setObjectName("statusbar")
    MainWindow.setStatusBar(self.statusbar)

    self.retranslateUi(MainWindow)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
    self.groupBox.setTitle(_translate("MainWindow", "GroupBox"))
    self.pushButton.setText(_translate("MainWindow", "PushButton"))
    self.pushButton_2.setText(_translate("MainWindow", "PushButton"))
    self.pushButton_3.setText(_translate("MainWindow", "PushButton"))

#mein.py
import sys
from PyQt5.QtWidgets import * 
from PyQt5.QtGui import * 
from PyQt5.QtCore import * 
from dos import *

class mein(QMainWindow):
 def __init__(self):
    self.uno = 2
    super().__init__()

    self.meini = Ui_MainWindow()
    self.meini.setupUi(self)

    

    self.meini.pushButton.clicked.connect(self.printi)
    self.show()

def printi(self):
    print(self.uno)
    self.uno +=1
    self.meini.pushButton3 = BotonDePc(self.meini.groupBox)
    self.meini.pushButton3.setObjectName("pushButton3")
    if self.uno < 7:
        self.meini.gridLayout.addWidget(self.meini.pushButton3, 0, self.uno, 1, 1)
    elif self.uno > 6 and self.uno < 14:
        self.meini.gridLayout.addWidget(self.meini.pushButton3, 0, self.uno-7, 2, 1)
    elif self.uno > 13 and self.uno < 21:
        self.meini.gridLayout.addWidget(self.meini.pushButton3, 0, self.uno-14, 3, 1)
    elif self.uno > 20 and self.uno < 28:
        self.meini.gridLayout.addWidget(self.meini.pushButton3, 0, self.uno-21, 4, 1)
    self.show()
    print(self.meini.pushButton3.sizeHint())


    

if __name__ == '__main__':
 app =QApplication(sys.argv)
 meini = mein()
 meini.show()
 sys.exit(app.exec_())
...