本篇主要介绍 QTabWidget的用法, 也会顺带介绍 QRadioButton 的分组, 以及 复合窗口部件的创建 。
Tab标签页窗口部件(QTabWidget)可以有多个”页面“(page),每个页面包含一个Tab标签页标题(可含图标),和若干子窗口部件(要么是单个部件,要么由它们组成一个复合窗口部件)。
QRadioButton 是一个可以“开”和“关”的按钮。 拥有同一父窗口部件,或者属于同一 button group 的 按钮,在同一时刻只有一个能处于 “开”的状态。
具体的运用详见代码:
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_())
本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!