#python #pyqt5
Вопрос:
Всякий раз, когда я запускаю приведенный ниже код для создания окна, перед главным окном на мгновение появляется пустое окно. Я удалял/перемещал линии в попытке выяснить, в чем причина.
Что я делаю не так, из-за чего на короткое время появляется это пустое окно?
import sys from PyQt5.QtWidgets import ( QApplication, QComboBox, QFormLayout, QLineEdit, QStackedLayout, QVBoxLayout, QWidget, QPushButton, QListWidget, QAbstractItemView, ) class Window(QWidget): def __init__(self): super().__init__() self.setFixedSize(260, 380) self.setWindowTitle("LogfileParser") layout = QVBoxLayout() self.setLayout(layout) self.pageCombo = QComboBox() self.pageCombo.addItems(["TSLogfileParser", "MBLogfileParser"]) self.stackedLayout = QStackedLayout() self.page1 = QWidget() self.page1Layout = QFormLayout() self.line_edit = QLineEdit() self.line_edit.setReadOnly(True) self.page1Layout.addRow("Directory:", self.line_edit) self.browsebutton = QPushButton("Browse") self.page1Layout.addRow(self.browsebutton) self.page1lw = QListWidget(selectionMode=QAbstractItemView.ExtendedSelection) self.lengthpage1lw = len(self.page1lw) self.page1Layout.addRow(self.page1lw) self.page1.setLayout(self.page1Layout) self.addbutton = QPushButton("Add") self.page1Layout.addWidget(self.addbutton) self.page1Layout.addRow(self.addbutton) self.removebutton = QPushButton("Remove") self.page1Layout.addRow(self.removebutton) self.parsebutton = QPushButton("Parse") self.page1Layout.addRow(self.parsebutton) self.stackedLayout.addWidget(self.page1) layout.addWidget(self.pageCombo) layout.addLayout(self.stackedLayout) if __name__ == "__main__": app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
Ответ №1:
У меня тоже была эта проблема раньше, проблема в QStackedLayout. Если вы измените его на QStackedWidget, он разрешится.
self.stackedLayout = QStackedWidget()
И в самом низу
layout.addWidget(self.stackedLayout)