PyQt Tab標籤頁窗口部件(QTabWidget)

本篇主要介紹 QTabWidget的用法, 也會順帶介紹 QRadioButton 的分組, 以及 複合窗口部件的創建 。

Tab標籤頁窗口部件(QTabWidget)可以有多個”頁面“(page),每個頁面包含一個Tab標籤頁標題(可含圖標),和若干子窗口部件(要麼是單個部件,要麼由它們組成一個複合窗口部件)。

QRadioButton 是一個可以“開”和“關”的按鈕。 擁有同一父窗口部件,或者屬於同一 button group 的 按鈕,在同一時刻只有一個能處於 “開”的狀態。

具體的運用詳見代碼:

PyQt Tab標籤頁窗口部件(QTabWidget)


import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
#from PyQt5.QtCore import Qt, QDate, QTime, QDateTime, QTimer
#
class Widget(QMainWindow):
縮進def __init__(self, parent = None):
縮進縮進super().__init__(parent)
縮進縮進self.setWindowTitle("Tab 部件演示")
縮進縮進self.textEdit = QTextEdit()
縮進縮進#self.textEdit.setFixedHeight(200)
縮進縮進self.textEdit.setText(" Input something here:")
縮進縮進self.textEdit.selectAll()
縮進縮進self.tabWidget = QTabWidget()
縮進縮進#設置tab 標籤在頁面的位置
縮進縮進#self.tabWidget.setTabPosition(QTabWidget.North) #默認 北 (0,上)
縮進縮進self.tabWidget.setTabPosition(QTabWidget.South) #南(1,下)
縮進縮進#self.tabWidget.setTabPosition(QTabWidget.West) #西(2,左)
縮進縮進#self.tabWidget.setTabPosition(QTabWidget.East) # 東(3,右)
縮進縮進#設置 tab 標籤的形狀
縮進縮進#self.tabWidget.setTabShape (QTabWidget.Rounded)# 圓角,0,默認
縮進縮進self.tabWidget.setTabShape (QTabWidget.Triangular)# 三角形,1
縮進縮進self.tabWidget.addTab(self.create_widget1(), "第一頁")
縮進縮進#還可以添加圖標
縮進縮進self.tabWidget.addTab(self.textEdit, QIcon("ICON/smile.png"), "第二頁")
縮進縮進self.tabWidget.currentChanged[int].connect(self.on_currentChanged)
縮進縮進self.setCentralWidget(self.tabWidget)
#
縮進def create_widget1(self):
縮進縮進#創建自定義複合窗口部件

縮進縮進widget = QWidget()#step1
縮進縮進gLayout = QGridLayout()
縮進縮進 label1 = QLabel("姓名:")
縮進縮進lineEdit1 = QLineEdit()
縮進縮進label1.setBuddy(lineEdit1)
縮進縮進label2 = QLabel("性別:")
縮進縮進buttonGroup = QButtonGroup()
縮進縮進radioButton1 = QRadioButton("男")
縮進縮進 radioButton2 = QRadioButton("女")
縮進縮進radioButton2.setChecked(True)
縮進縮進#同一button group 或同一 父窗體的 為一個分組,多選一
縮進縮進buttonGroup.addButton(radioButton1)
縮進縮進buttonGroup.addButton(radioButton2)
縮進縮進gLayout.addWidget(label1, 0, 0)
縮進縮進gLayout.addWidget(lineEdit1, 0, 1, 1, 2)
縮進縮進gLayout.addWidget(label2,1,0)
縮進縮進gLayout.addWidget(radioButton1, 1, 1)
縮進縮進gLayout.addWidget(radioButton2, 1, 2)
縮進縮進widget.setLayout(gLayout)#step2
縮進縮進return widget
#
縮進def on_currentChanged(self, index):
縮進縮進print("current tab index:", index)
縮進縮進print("current tab index:", self.tabWidget.currentIndex())
縮進縮進print("current tab widget:", self.tabWidget.currentWidget())
縮進縮進print("tab count", self.tabWidget.count())
縮進縮進#self.tabWidget.setCurrentIndex(1) #可通過代碼設定當前tab
縮進縮進#self.tabWidget.setTabEnabled (self, int index, bool) #disable Tab
#
if __name__ == '__main__':
縮進app = QApplication(sys.argv)
縮進wg = Widget()
縮進wg.show()
縮進sys.exit(app.exec_())


分享到:


相關文章: