PyQt5 QTab小工具

PyQt5 QTab小工具

如果一个表单有太多的字段需要同时显示,它们可以被安排在不同的页面中,放在Tabbed Widget的每个标签下。它提供了一个标签栏和一个页面区域。第一个标签下的页面被显示出来,其他的被隐藏。用户可以通过点击所需的标签查看任何页面。

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

序号 方法和描述
1 addTab() 添加一个与Widget页面相关的标签。
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()

上面的代码产生了以下的输出 –

PyQt5 - QTab小工具

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程