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()
上面的代码产生以下输出−