可以使用QStackedWidget代替QStackedLayout来避免该问题。以下是一个示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QWidget, QLabel, QStackedWidget, QVBoxLayout
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
central_widget = QWidget()
self.setCentralWidget(central_widget)
button_widget = QWidget()
button_layout = QVBoxLayout()
button_widget.setLayout(button_layout)
button1 = QPushButton("Button 1")
button2 = QPushButton("Button 2")
button_layout.addWidget(button1)
button_layout.addWidget(button2)
stacked_widget = QStackedWidget()
stacked_widget.addWidget(QLabel("Page 1"))
stacked_widget.addWidget(QLabel("Page 2"))
main_layout = QVBoxLayout()
central_widget.setLayout(main_layout)
main_layout.addWidget(button_widget)
main_layout.addWidget(stacked_widget)
button1.clicked.connect(lambda: stacked_widget.setCurrentIndex(0))
button2.clicked.connect(lambda: stacked_widget.setCurrentIndex(1))
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
在这个例子中,我们使用QStackedWidget和两个QPushButton来创建带有两个标签页面的布局。我们将QPushButton添加到一个垂直QVBoxLayout中,然后将它们添加到QWidget中,它本身又添加到我们的主QVBoxLayout中。最后,我们将QStackedWidget添加到我们的主布局中。当按钮被点击时,我们可以通过setCurrentIndex()方法在不同的QLabel页面之间切换。
上一篇:包含其他注解列表的自定义注解
下一篇:包含缺失的列