pyqt5 stackedwidget代码实现添加与某一page相同样式的page(包括其中的控件)
时间: 2024-01-09 07:05:08 浏览: 150
可以通过以下代码实现在 `QStackedWidget` 中添加与某一 `page` 相同样式的 `page`,包括其中的控件:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QStackedWidget
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建 QStackedWidget
self.stackedWidget = QStackedWidget(self)
# 创建第一个页面
page1 = QWidget()
layout1 = QVBoxLayout()
label1 = QLabel('Page 1', self)
layout1.addWidget(label1)
btn1 = QPushButton('Next', self)
btn1.clicked.connect(self.nextPage)
layout1.addWidget(btn1)
page1.setLayout(layout1)
# 创建第二个页面
page2 = QWidget()
layout2 = QVBoxLayout()
label2 = QLabel('Page 2', self)
layout2.addWidget(label2)
btn2 = QPushButton('Next', self)
btn2.clicked.connect(self.nextPage)
layout2.addWidget(btn2)
page2.setLayout(layout2)
# 创建第三个页面,与第二个页面相同样式
page3 = QWidget()
layout3 = QVBoxLayout()
label3 = QLabel('Page 3', self)
layout3.addWidget(label3)
btn3 = QPushButton('Next', self)
btn3.clicked.connect(self.nextPage)
layout3.addWidget(btn3)
page3.setLayout(layout3)
# 将页面添加到 QStackedWidget 中
self.stackedWidget.addWidget(page1)
self.stackedWidget.addWidget(page2)
# 获取第二个页面的样式
style = page2.styleSheet()
# 设置第三个页面的样式
page3.setStyleSheet(style)
# 将第三个页面添加到 QStackedWidget 中
self.stackedWidget.addWidget(page3)
# 显示 QStackedWidget
layout = QHBoxLayout(self)
layout.addWidget(self.stackedWidget)
self.setLayout(layout)
def nextPage(self):
currentIndex = self.stackedWidget.currentIndex()
self.stackedWidget.setCurrentIndex(currentIndex + 1)
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
```
在这个例子中,我们首先创建了两个页面 `page1` 和 `page2`,然后通过 `addWidget` 方法将这两个页面添加到 `QStackedWidget` 中。接着,我们获取了第二个页面的样式,并将其应用到第三个页面 `page3` 上,然后再将 `page3` 添加到 `QStackedWidget` 中。这样,我们就实现了在 `QStackedWidget` 中添加与某一 `page` 相同样式的 `page`,包括其中的控件。
阅读全文