PyQt QTab小部件

PyQt QTab小部件

如果一个表单有太多的字段无法同时显示,可以将其安排在选项卡小部件的每个选项卡下的不同页面中。QTabWidget提供一个选项卡栏和一个页面区域。第一个选项卡下的页面被显示,其他页面被隐藏。用户可以通过点击所需的选项卡来查看任何页面。

以下是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 PyQt4.QtCore import *
from PyQt4.QtGui 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()

上面的代码产生以下输出−

PyQt QTab小部件

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程