PySide2学习记录(十八):QTabWidget

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_()

效果图(系统不一样,显示的格式也不一样):

图1
图2

一个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_()

效果图:

图3

self.layout = QtWidgets.QGridLayout(self)生成一个网格布局对象
self.layout.addWidget(QtWidgets.QCheckBox(str(i) + '-' + str(j)), i, j, QtCore.Qt.AlignCenter)将widget添加到网格布局中的指定位置,最后一个参数为添加到正中间。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容