Pyqt5 QTabWidget实现多标签页面
实现功能
代码实现
使用 QTabWidget 的步骤为:
1.建一个 QTabWidget
2.为每个选项卡创建一个页面(容器),通常为 QWidget(不要指定父部件)
3.把子部件插入到页面部件(即容器)中
4.使用 addTab()或 insertTab()把页面部件放入选项卡部件
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QVBoxLayout, QPushButton, QWidget, QLabel, \
QDesktopWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.ini_ui()
def ini_ui(self):
self.setWindowTitle("多标签页面切换")
self.resize(800, 800)
# 窗口移动到中心
port = QDesktopWidget().availableGeometry().center() # 获取屏幕中心点
x, y, w, h = self.frameGeometry().getRect() # 返回窗口坐标点xy和宽和高wh
self.move(int(port.x() - w / 2), int(port.y() - h / 2))
# 创建tab对象
self.tab_widget = QTabWidget()
self.setCentralWidget(self.tab_widget) # 主要用于设置主窗口的中央部件
tab_shape = QTabWidget.Triangular # 设置标签页为三角形
self.tab_widget.setTabShape(tab_shape)
# 创建连个tab page页面,并且添加到tab中
self.page1 = QWidget()
self.page2 = QWidget()
self.tab_widget.addTab(self.page1, "页面1")
self.tab_widget.addTab(self.page2, "页面2")
self.tab_widget.currentChanged.connect(self.page_change_fun) # 标签发生变换,就处理一些事情。
# 给每个page页面添加布局、控件
layout1 = QVBoxLayout()
label1 = QLabel('页面1显示的内容')
btn1 = QPushButton('点我切换到页面2')
btn1.clicked.connect(lambda: self.switch_page(1))
layout1.addWidget(label1)
layout1.addWidget(btn1)
self.page1.setLayout(layout1)
layout2 = QVBoxLayout()
label2 = QLabel('页面2显示的内容')
btn2 = QPushButton('点我切换到页面1')
btn2.clicked.connect(lambda: self.switch_page(0))
layout2.addWidget(label2)
layout2.addWidget(btn2)
self.page2.setLayout(layout2)
print(f'当前tab中的标签数量:{self.tab_widget.count()}')
def switch_page(self, index):
self.tab_widget.setCurrentIndex(index) # QTabWidget 中,setCurrentIndex用于设置当前选中的选项卡索引
def page_change_fun(self):
page_index = self.tab_widget.currentIndex()
print(f'当前页面标签index:{page_index}')
StyleSheet = '''
QTabBar {
border: 0px solid #31363B;
}
QTabBar::tab:top:selected {
color: red;
}
'''
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setStyleSheet(StyleSheet)
mainWin = MainWindow()
mainWin.show()
sys.exit(app.exec())
self.tab_widget.addTab(self.page2, "页面2")
给Qtabwidget添加标签页面
self.tab_widget.currentChanged.connect(self.page_change_fun)
当标签发生变换,就处理一些事情。
self.tab_widget.setCurrentIndex(index)
用于设置当前选中的选项卡索引(不手动点击标签页的情况使用)
tab_shape = QTabWidget.Triangular # 设置标签页为三角形
self.tab_widget.setTabShape(tab_shape)