Python版本3.7
PySide2 Version: 5.14.1
官方文档:http://doc.qt.io/qtforpython/index.html
from PySide2.QtWidgets import QApplication, QTabWidget, QPushButton
app = QApplication()
tabwidget = QTabWidget()
tabwidget.addTab(QPushButton('tab1'), 'tab1')
tabwidget.addTab(QPushButton('tab2'), 'tab2')
tabwidget.show()
app.exec_()
效果图(系统不一样,显示的格式也不一样):
一个QTabWidget
对象包含两个东西,一个是上面框框里面的QTabBar
对象,然后是每个tab里面的页面(page)或者widget。上面每个tab里面只包含了一个按钮。QTabBar类
详细信息链接:QTabBar
tabwidget = QtWidgets.QTabWidget()
生成一个QTabWidget对象
tabwidget.addTab(QtWidgets.QPushButton('tab1'), 'tab1')
生成一个tab,加入到tabwidget里面,同时这个tab里面包含了一个widget,这里的widget是按钮,也可以是自定义的widget。
上面使用addTab会默认生成一个QTabBar对象,如果不喜欢默认的,可以自己生成一个QTabBar对象,然后使用QTabWidget类里面的方法setTabBar(arg__1)
,传入一个QTabBar对象就可以了。
再举一个例子:
from PySide2.QtWidgets import QApplication, QWidget, QGridLayout, QCheckBox, QTabWidget, QVBoxLayout
from PySide2.QtCore import Qt
class MyWidget01(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.layout = QGridLayout(self)
for i in range(4):
for j in range(4):
self.layout.addWidget(QCheckBox(str(i) + '-' + str(j)), i, j, Qt.AlignCenter)
class MyWidget02(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.layout = QGridLayout(self)
for i in range(3):
for j in range(3):
self.layout.addWidget(QCheckBox(str(i) + '-' + str(j)), i, j, Qt.AlignCenter)
class MyWidget03(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.layout = QGridLayout(self)
for i in range(2):
for j in range(2):
self.layout.addWidget(QCheckBox(str(i) + '-' + str(j)), i, j, Qt.AlignCenter)
app = QApplication()
window = QWidget()
window.setFixedSize(400, 300)
tabwidget = QTabWidget(window)
tabwidget.addTab(MyWidget01(), '电影类别')
tabwidget.addTab(MyWidget02(), '书籍类别')
tabwidget.addTab(MyWidget03(), '动物类型')
layout = QVBoxLayout()
layout.addWidget(tabwidget)
window.setLayout(layout)
window.show()
app.exec_()
效果图:
self.layout = QtWidgets.QGridLayout(self)
生成一个网格布局对象
self.layout.addWidget(QtWidgets.QCheckBox(str(i) + '-' + str(j)), i, j, QtCore.Qt.AlignCenter)
将widget添加到网格布局中的指定位置,最后一个参数为添加到正中间。