PyQt5 标签页控件(QTabWidget)的使用
tab页控件
- QTabWidget 类提供了一堆标签式小部件,如图所示
-
选项卡小部件提供一个选项卡栏(请参阅QTabBar)和一个用于显示与每个选项卡相关的页面的“页面区域”。默认情况下,标签栏显示在页面区域上方,但有不同的配置可用(请参见TabPosition)。
-
每个选项卡都与一个不同的小部件(称为页面)相关联。只有当前页面显示在页面区域中 ;所有其他页面都隐藏起来。用户可以通过单击其选项卡或按Alt +字母快捷键(如果有)来显示不同的页面
-
使用 QTabWidget 的正常方法是执行以下操作:
- 创建一个 QTabWidget
- 为选项卡对话框中的每个页面创建一个 QWidget,但不要为它们指定父窗口小部件
- 将子窗口小部件插入到页面窗口小部件中,使用布局为其定位。
- 调用addTab()或insertTab()将页面小部件放入选项卡小部件,为每个选项卡提供一个带有可选键盘快捷键的合适标签
-
QTabWidget 选项卡的位置由 TabPosition 定义,定义了 QTabWidget 在哪里绘制标签行
- QTabWidget.TabPosition 举例
常数 | 值 | 描述 |
---|---|---|
QTabWidget.TabPosition.North | 0 | 选项卡绘制在页面上方,默认值 |
QTabWidget.TabPosition.South | 1 | 标签在页面下方绘制 |
QTabWidget.TabPosition.West | 2 | 这些选项卡绘制在页面的左侧 |
QTabWidget.TabPosition.East | 3 | 这些选项卡绘制在页面的右侧 |
tabwidget = QTabWidget(window)
tabwidget.setTabPosition(QTabWidget.TabPosition.West) # 这是其中一种写法,下面是第二种写法,也可不写,默认是在上方
# tabwidget.setTabPosition(0)
tabwidget = QTabWidget(window)
tabwidget.setTabPosition(QTabWidget.TabPosition.South)
# tabwidget.setTabPosition(1)
tabwidget = QTabWidget(window)
tabwidget.setTabPosition(QTabWidget.TabPosition.West)
# tabwidget.setTabPosition(2)
tabwidget = QTabWidget(window)
tabwidget.setTabPosition(QTabWidget.TabPosition.East)
# tabwidget.setTabPosition(3)
- QTabWidget 选项卡的形状由 TabShape 定义,它定义了选项卡的形状
- QTabWidget.TabShape 举例
常数 | 值 | 描述 |
---|---|---|
QTabWidget.TabShape.Rounded | 0 | 这些选项卡以圆角的外观绘制。这是默认形状 |
QTabWidget.TabShape.Triangular | 1 | 这些选项卡以三角形外观绘制 |
tabwidget = QTabWidget(window)
tabwidget.setTabShape(QTabWidget.TabShape.Rounded) # 两种方式任选其一,这个是默认的
# tabwidget.setTabShape(0)
tabwidget = QTabWidget(window)
tabwidget.setTabShape(QTabWidget.TabShape.Triangular)
# tabwidget.setTabShape(1)
- 信号 currentChanged() 是在用户选择页面时发出的
tabwidget.currentChanged.connect(function)
- 其他小Tips
-
当前页面索引可使用 currentIndex() 获得,当前页面小部件可使用 currentWidget() 获得。
-
您可以使用 widget() 检索指向给定索引的页面小部件,并可以使用 indexOf() 来查找小部件的索引位置。
-
使用 setCurrentWidget() 或 setCurrentIndex()来显示特定的页面
-
可以使用 setTabText() 或 setTabIcon() 更改选项卡的文本和图标
-
可以使用 removeTab() 删除选项卡及其关联的页面
-
每个选项卡可以在任何时间启用或禁用(请参阅setTabEnabled())。如果启用选项卡,标签文本将正常绘制,用户可以选择该选项卡。如果它被禁用,则选项卡以不同的方式绘制,并且用户不能选择该选项卡
-
选项卡小部件可以是分离复杂对话框的一种非常好的方法。另一种方法是使用QStackedWidget,为其提供一些页面之间的导航方式,例如QToolBar或QListWidget
-
QTabWidget中的大部分功能都由QTabBar(位于顶部,提供选项卡)和QStackedWidget(大部分区域,组织各个页面)提供。
-
部分来自:知乎