Actuellement, j'essaie d'ajouter une classe QWidget personnalisée à un QVBoxLayout. Le problème que j'obtiens est que le widget n'apparaît pas du tout dans la mise en page. J'ai même essayé de définir la taille minimale de QWidget parce que je pensais que le widget ne s'affichait pas parce que sa taille par défaut était zéro.PyQt5 ajoute QWidget personnalisé à QLayout
Ceci est une simplification de ce que la classe ressemble à:
class myWidget(QWidget):
def __init__(self):
super().__init__()
# Slider
self.mySlider = QSlider(Qt.Horizontal)
self.mySlider.setRange(-360, 360)
# LCD Screen
self.lcd = QLCDNumber()
self.lcd.setMinimumHeight(45)
self.lcd.setMaximumHeight(75)
# set Size
self.setMinimumSize(QSize(400,300))
J'ai enlevé les signaux et les créneaux horaires effectués entre le curseur et l'écran LCD parce que je ne suis pas inquiet au sujet de la fonctionnalité ici. Seul le fait que je reçois une zone grise de QSize (400300) directement entre les deux boutons dans le code suivant:
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
#Create Widgets to be Added to Central Widget
self.w1 = QPushButton("First")
self.w2 = myWidget()
self.w3 = QPushButton("Third")
#Set Central Widget and VBox
self.central_widget = QWidget()
self.setCentralWidget(self.central_widget)
self.layout = QVBoxLayout()
self.central_widget.setLayout(self.layout)
#Add widgets
self.layout.addWidget(self.w1)
self.layout.addWidget(self.w2)
self.layout.addWidget(self.w3)
Donc ce que je suis tout simplement faire est de créer les 3 widgets, et en les plaçant dans le QVBoxLayout dans le widget central. Les widgets 2 boutons w1
et w3
apparaissent mais mon widget personnalisé n'apparaît pas et l'augmentation de la taille du widget via setMinimumSize
ajoute uniquement l'espacement gris entre w1
et w3
.
Donc, le widget est là, il n'est tout simplement pas visible pour une raison quelconque. Je suis assez nouveau à PyQt alors s'il vous plaît expliquer pourquoi cela est arrivé.