Python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
介绍
在PyQt5窗口布局控件中,QStackedWidget是很常用的一个控件,它主要是用来实现多个Widget在同一个窗口下的切换。
QStackedWidget的基本使用方法
步骤一:导入库
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
步骤二:创建QStackedWidget并添加Widget
self.stacked_widget = QStackedWidget(self)
self.page1 = QWidget()
self.page2 = QWidget()
self.stacked_widget.addWidget(self.page1)
self.stacked_widget.addWidget(self.page2)
步骤三:设置当前显示的Widget
self.stacked_widget.setCurrentWidget(self.page1)
步骤四:在按钮的槽函数中进行切换
def button_click(self):
self.stacked_widget.setCurrentWidget(self.page2)
QStackedWidget的高级使用方法
设置特定Widget的名称
self.stacked_widget.addWidget(self.page1, "Page1")
self.stacked_widget.addWidget(self.page2, "Page2")
获取当前显示的Widget的名称
current_widget_name = self.stacked_widget.currentWidget().objectName()
设置动画效果
self.stacked_widget.setAnimation(QStackedWidget.Slide)
示例一:切换多个Widget
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setWindowTitle("MyApp")
self.resize(250,150)
self.button1 = QPushButton("Button1")
self.button1.clicked.connect(self.on_button1_clicked)
self.button2 = QPushButton("Button2")
self.button2.clicked.connect(self.on_button2_clicked)
self.stacked_widget = QStackedWidget(self)
self.page1 = QWidget()
self.page1.setObjectName("Page1")
self.page1_label = QLabel("This is Page1", self.page1)
self.page2 = QWidget()
self.page2.setObjectName("Page2")
self.page2_label = QLabel("This is Page2", self.page2)
self.stacked_widget.addWidget(self.page1)
self.stacked_widget.addWidget(self.page2)
layout = QHBoxLayout()
layout.addWidget(self.button1)
layout.addWidget(self.button2)
vbox = QVBoxLayout()
vbox.addLayout(layout)
vbox.addWidget(self.stacked_widget)
central_widget = QWidget()
central_widget.setLayout(vbox)
self.setCentralWidget(central_widget)
def on_button1_clicked(self):
self.stacked_widget.setCurrentWidget(self.page1)
def on_button2_clicked(self):
self.stacked_widget.setCurrentWidget(self.page2)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
示例二:结合TabWidget和StackedWidget使用
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setWindowTitle("MyApp")
self.resize(250,150)
self.tab_widget = QTabWidget(self)
self.tab_widget.addTab(QWidget(), "Tab1")
self.tab_widget.addTab(QWidget(), "Tab2")
self.stacked_widget = QStackedWidget(self)
self.page1 = QWidget()
self.page1.setObjectName("Page1")
self.page1_label = QLabel("This is Page1", self.page1)
self.page2 = QWidget()
self.page2.setObjectName("Page2")
self.page2_label = QLabel("This is Page2", self.page2)
self.stacked_widget.addWidget(self.page1)
self.stacked_widget.addWidget(self.page2)
self.tab_widget.currentChanged.connect(self.on_tab_changed)
vbox = QVBoxLayout()
vbox.addWidget(self.tab_widget)
vbox.addWidget(self.stacked_widget)
central_widget = QWidget()
central_widget.setLayout(vbox)
self.setCentralWidget(central_widget)
def on_tab_changed(self, index):
self.stacked_widget.setCurrentIndex(index)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
以上就是关于PyQt5中窗口布局控件QStackedWidget的使用方法,包括基本使用方法和高级使用方法,以及多个示例的说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法 - Python技术站