Вложенные макеты PyQt5 не отображаются

#python #python-3.x #pyqt #pyqt5 #pyqt4

#python #python-3.x #pyqt #pyqt5 #pyqt4

Вопрос:

В настоящее время я пробую себя в PyQt5 и попытался создать пользовательский виджет, который содержит вложенный макет с некоторыми метками. Однако, когда я пытаюсь запустить код, ошибок не возникает, но окно остается пустым. В чем здесь может быть проблема?

 class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setWindowTitle("This is a test")
        devicewidget = DeviceWidget()
        self.setCentralWidget(devicewidget)

class DeviceWidget(QWidget):
    def __init__(self, *args, **kwargs):
        super(DeviceWidget, self).__init__(*args, **kwargs)
        layout = QVBoxLayout()
        save_image_btn = QPushButton("Save Image")
        restore_image_btn = QPushButton("Install Image")

        device_size_layout = QHBoxLayout()
        device_size_desc_lbl = QLabel("Space:")
        device_size_lbl = QLabel("69420MB")
        device_size_layout.addWidget(device_size_desc_lbl)
        device_size_layout.addWidget(device_size_lbl)

        layout.addWidget(save_image_btn)
        layout.addWidget(save_image_btn)
        layout.addLayout(device_size_layout)

#Initialization
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
  

Просто чтобы было ясно, это то, что я сейчас пытаюсь выполнить:
введите описание изображения здесь

Комментарии:

1. изменить layout = QVBoxLayout() на layout = QVBoxLayout(self)

Ответ №1:

Решение заключалось в том, что я забыл установить макет в классе DeviceWidget.

 self.setLayout(layout) or layout= QVBoxLayout(self) 
  

помогло.