PyQt - QTab Widget



如果表單欄位過多無法同時顯示,可以將它們排列在選項卡式視窗的各個選項卡下。QTabWidget 提供了一個選項卡欄和一個頁面區域。第一個選項卡下的頁面顯示,其他頁面隱藏。使用者可以透過點選所需的選項卡來檢視任何頁面。

以下是 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()

以上程式碼產生以下輸出:

QTabWidget Output
廣告

© . All rights reserved.