PyQt5 - QTab Widget



如果表单字段过多,无法同时显示,则可以将其排列在选项卡式窗口的不同页面中,每个页面放置在一个选项卡下。它提供了一个选项卡栏和一个页面区域。第一个选项卡下的页面显示,其他页面隐藏。用户可以通过点击所需的选项卡查看任何页面。

以下是 QTabWidget 类的一些常用方法:

序号 方法及描述
1

addTab()

添加一个与小部件页面关联的选项卡

2

insertTab()

在所需位置插入一个带有页面的选项卡

3

removeTab()

删除给定索引处的选项卡

4

setCurrentIndex()

将当前可见页面的索引设置为当前索引

5

setCurrentWidget()

将可见页面设置为当前页面

6

setTabBar()

设置小部件的选项卡栏

7

setTabPosition()

选项卡的位置由以下值控制:

QTabWidget.North 页面上方

QTabWidget.South 页面下方

QTabWidget.West 页面左侧

QTabWidget.East 页面右侧

8

setTabText()

定义与选项卡索引关联的标签

以下信号与 QTabWidget 对象相关联:

序号 方法及描述
1

currentChanged()

每当当前页面索引更改时

2

tabClosedRequested()

当点击选项卡上的关闭按钮时

示例

在以下示例中,表单的内容被分成三类。每组小部件都在不同的选项卡下显示。

顶级窗口本身就是一个 QTabWidget。向其中添加了三个选项卡。

self.addTab(self.tab1,"Tab 1")
self.addTab(self.tab2,"Tab 2")
self.addTab(self.tab3,"Tab 3")

每个选项卡都显示一个使用布局设计的子表单。选项卡文本由语句更改。

self.setTabText(0,"Contact Details")
self.setTabText(1,"Personal Details")
self.setTabText(2,"Education Details")

完整代码如下:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class tabdemo(QTabWidget):
   def __init__(self, parent = None):
      super(tabdemo, self).__init__(parent)
      self.tab1 = QWidget()
      self.tab2 = QWidget()
      self.tab3 = QWidget()
		
      self.addTab(self.tab1,"Tab 1")
      self.addTab(self.tab2,"Tab 2")
      self.addTab(self.tab3,"Tab 3")
      self.tab1UI()
      self.tab2UI()
      self.tab3UI()
      self.setWindowTitle("tab demo")
		
   def tab1UI(self):
      layout = QFormLayout()
      layout.addRow("Name",QLineEdit())
      layout.addRow("Address",QLineEdit())
      self.setTabText(0,"Contact Details")
      self.tab1.setLayout(layout)
		
   def tab2UI(self):
      layout = QFormLayout()
      sex = QHBoxLayout()
      sex.addWidget(QRadioButton("Male"))
      sex.addWidget(QRadioButton("Female"))
      layout.addRow(QLabel("Sex"),sex)
      layout.addRow("Date of Birth",QLineEdit())
      self.setTabText(1,"Personal Details")
      self.tab2.setLayout(layout)
		
   def tab3UI(self):
      layout = QHBoxLayout()
      layout.addWidget(QLabel("subjects")) 
      layout.addWidget(QCheckBox("Physics"))
      layout.addWidget(QCheckBox("Maths"))
      self.setTabText(2,"Education Details")
      self.tab3.setLayout(layout)
		
def main():
   app = QApplication(sys.argv)
   ex = tabdemo()
   ex.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   main()

以上代码产生以下输出:

QTabWidget Output
pyqt_basic_widgets.htm
广告

© . All rights reserved.