qtabwidget的图标_实战PyQt5: 050-选项卡控件QTabWidget
生活随笔
收集整理的這篇文章主要介紹了
qtabwidget的图标_实战PyQt5: 050-选项卡控件QTabWidget
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
QTabWidget簡介
在GUI應(yīng)用軟件中,多頁面的切換的使用范圍十分廣泛,在操作過程中,用戶使用鼠標(biāo)點(diǎn)擊不同的標(biāo)題欄就可以方便展示不同頁面的內(nèi)容,眾多界面共用一塊顯示區(qū)域,在有限的就顯示區(qū)域中可以很方便地位用戶顯示更多的信息。
Qt為多頁面切換的實(shí)現(xiàn)提供了一個(gè)專門的控件QTabWidget, 它可以實(shí)現(xiàn)在同一區(qū)域中自由切換不同頁面的內(nèi)容,該控件是一個(gè)容器類控件,并提供友好的頁面切換方式。
QTabWidget常用方法有:
- addTab(): 添加一個(gè)標(biāo)簽;
- insertTab(): 在指定位置插入一個(gè)標(biāo)簽;
- removeTab(): 刪除指定索引的標(biāo)簽;
- setTabText(): 設(shè)置指定索引標(biāo)簽的文本信息;
- tabText(): 獲得指定索引標(biāo)簽的文本信息;
- setTabIcon(): 設(shè)置指定索引標(biāo)簽的圖標(biāo);
- tabIcon(): 獲得指定索引標(biāo)簽的圖標(biāo);
- currentWidget(): 獲得當(dāng)前活動(dòng)標(biāo)簽的部件;
- widget(): 獲得指定標(biāo)簽索引的部件;
- indexOf(): 獲得指定部件的標(biāo)簽索引;
- count(): 總標(biāo)簽數(shù);
- setTabPosition(): 設(shè)置標(biāo)簽的顯示位置,值為(北:QTabWidget.North, 南:QTabWidget.South, 西:QTabWidget.West, 東:QTabWidget.East);
- setTabShape(): 設(shè)置標(biāo)簽的形狀, 值為:(四邊形:QTabWidget.Rounded, 三角形:QTabWidget.Triangular)。
QTabWidget常用信號:
- currentChanged: 當(dāng)前標(biāo)簽頁發(fā)生改變后,發(fā)射該信號;
- tabCloseRequested: 標(biāo)簽頁關(guān)閉請求時(shí),發(fā)射該信號;
- tabBarClicked: 單擊了標(biāo)簽條,發(fā)射該信號;
- tabBarDoubleClicked: 雙擊了標(biāo)簽條,發(fā)射該信號。
QTabWidget類繼承關(guān)系:
測試QTabWidget
創(chuàng)建文件qtabwidget,假設(shè)我們設(shè)計(jì)一個(gè)win10系統(tǒng)文件右鍵菜單屬性對話框,其主要內(nèi)容就是由選項(xiàng)卡控件實(shí)現(xiàn), 在這里實(shí)現(xiàn)其選項(xiàng)卡框架, 完整代碼如下:
import?sysfrom?PyQt5?import?QtCore,?QtGui,?QtWidgetsfrom?PyQt5.QtCore?import?Qtfrom?PyQt5.QtGui?import?QFontfrom?PyQt5.QtWidgets?import?(QApplication,?QMainWindow,?QWidget,??????????????????????????????QTabWidget,?QMenuBar,?QMenu,?QAction,?????????????????????????????QActionGroup,?QVBoxLayout,?QLabel)?class?DemoTabWidget(QMainWindow):????def?__init__(self,?parent=None):????????super(DemoTabWidget,?self).__init__(parent)????????????????????#?設(shè)置窗口標(biāo)題????????self.setWindowTitle('實(shí)戰(zhàn)PyQt5:?QTabWidget?Demo!')??????????????#?設(shè)置窗口大小????????self.resize(480,?360)??????????????self.initUi()????????????def?initUi(self):????????????????self.initMenu()????????????????self.tw?=?QTabWidget(self)????????self.tw.addTab(self.createWidget(0),?'常規(guī)')????????self.tw.addTab(self.createWidget(1),?'快捷方式')????????self.tw.addTab(self.createWidget(2),?'兼容性')????????self.tw.addTab(self.createWidget(3),?'安全')????????self.tw.addTab(self.createWidget(4),?'詳細(xì)信息')????????self.tw.addTab(self.createWidget(5),?'以前的版本')????????????????self.setCentralWidget(self.tw)????????????????def?initMenu(self):????????menuBar?=?self.menuBar()????????#添加一個(gè)菜單項(xiàng),在菜單項(xiàng)下課添加子菜單項(xiàng)????????fileMenu?=?menuBar.addMenu('文件')????????aExit?=?QAction('Exit',?self)????????aExit.triggered.connect(self.close)????????fileMenu.addAction(aExit)????????????????#標(biāo)簽條位置控制????????posMenu?=?menuBar.addMenu('標(biāo)簽條位置')????????????????aNorth?=?QAction('上方',?self)????????aNorth.setCheckable(True)????????aNorth.setChecked(True)????????aNorth.triggered.connect(lambda:self.changeTabPos(0))????????aSouth?=?QAction('下方',?self)????????aSouth.setCheckable(True)????????aSouth.triggered.connect(lambda:self.changeTabPos(1))????????aWest?=?QAction('左邊',?self)????????aWest.setCheckable(True)????????aWest.triggered.connect(lambda:self.changeTabPos(2))????????aEast?=?QAction('右邊',?self)????????aEast.setCheckable(True)????????aEast.triggered.connect(lambda:self.changeTabPos(3))????????????posGroup?=?QActionGroup(self)????????posGroup.addAction(aNorth)????????posGroup.addAction(aSouth)????????posGroup.addAction(aWest)????????posGroup.addAction(aEast)????????????????posMenu.addAction(aNorth)????????posMenu.addAction(aSouth)????????posMenu.addAction(aWest)????????posMenu.addAction(aEast)????????????????#標(biāo)簽條形狀????????shapeMenu?=?menuBar.addMenu('標(biāo)簽條形狀')????????aRounded?=?QAction('圓角矩形',?self)????????aRounded.setCheckable(True)????????aRounded.setChecked(True)????????aRounded.triggered.connect(lambda:self.changeTabShape(0))????????aTriangular?=?QAction('三角形',?self)????????aTriangular.setCheckable(True)????????aTriangular.triggered.connect(lambda:self.changeTabShape(1))????????????????shapeGroup?=?QActionGroup(self)????????shapeGroup.addAction(aRounded)????????shapeGroup.addAction(aTriangular)????????????????shapeMenu.addAction(aRounded)????????shapeMenu.addAction(aTriangular)????????????def?changeTabPos(self,?index):????????switcher?=?{????????????0:?QTabWidget.North,????????????1:?QTabWidget.South,????????????2:?QTabWidget.West,????????????3:?QTabWidget.East????????}????????self.tw.setTabPosition(switcher.get(index))????????????def?changeTabShape(self,?index):????????if?index?==?0:????????????self.tw.setTabShape(QTabWidget.Rounded)????????else:????????????self.tw.setTabShape(QTabWidget.Triangular)????????????????def?createWidget(self,?index):????????wid?=?QWidget()????????layout?=?QVBoxLayout(wid)????????label?=?QLabel(wid)????????label.setAlignment(Qt.AlignCenter)????????label.setFont(QFont(self.font().family(),?36))????????label.setText("選項(xiàng)卡?{}".format(index?+?1))????????????????layout.addWidget(label)????????wid.setLayout(layout)????????return?wid????if?__name__?==?'__main__':????app?=?QApplication(sys.argv)????window?=?DemoTabWidget()????window.show()????sys.exit(app.exec())運(yùn)行結(jié)果如下圖:
測試QTabWidget
本文知識(shí)點(diǎn)
- 使用QTabWidget添加多個(gè)選項(xiàng)卡;
- 改變選項(xiàng)卡標(biāo)簽的顯示位置;
- 改變選項(xiàng)卡標(biāo)簽的形狀;
- 使用QActionGroup實(shí)現(xiàn)一組菜單項(xiàng)的單選功能;
- 改變QLabel字體的尺寸。
喜歡本文內(nèi)容就收藏,點(diǎn)贊,評論,關(guān)注和轉(zhuǎn)發(fā)。
總結(jié)
以上是生活随笔為你收集整理的qtabwidget的图标_实战PyQt5: 050-选项卡控件QTabWidget的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rdd数据存内存 数据量_「大数据」(七
- 下一篇: 宇通房车与奔驰卡车签署战略合作协议,新款