1、引言 在Python編程中,PyQt庫(kù)是使用率較高的一個(gè)編寫程序軟件的圖形界面庫(kù)。我們常常需要使用圖標(biāo)美化界面,如給控件設(shè)置圖標(biāo)、菜單中加圖標(biāo)指示等,圖標(biāo)資源除了在網(wǎng)上下載現(xiàn)成的圖標(biāo)文件外,也可以使用PyQt庫(kù)中內(nèi)置的圖標(biāo)。實(shí)際上,在PyQt5界面庫(kù)中內(nèi)置了大約70個(gè)左右的常用圖標(biāo),不同版本的PyQt庫(kù)中其個(gè)數(shù)略有區(qū)別,下面給出獲取這些圖標(biāo)并顯示的方法。 2、軟件運(yùn)行界面 先看下軟件界面,如下圖所示,在一個(gè)窗口中,使用網(wǎng)格布局(QGridLayout),每行顯示4個(gè)按鈕控件,在每個(gè)按鈕控件上顯示出一個(gè)圖標(biāo),并同時(shí)顯示出該圖標(biāo)的名稱及其對(duì)應(yīng)的索引號(hào)。 3、代碼實(shí)現(xiàn) 在PyQt5中可使用QApplication.style().standardIcon()方法來實(shí)現(xiàn)對(duì)其內(nèi)置圖標(biāo)的使用,實(shí)現(xiàn)上述界面的代碼及其簡(jiǎn)單,加上注釋及空行,全部代碼僅需35行即可實(shí)現(xiàn)了,如下圖所示。 sys PyQt5.QtWidgets * PyQt5.QtGui * PyQt5.QtCore * (QWidget): (, parent=): (MainWnd, ).(parent) icons = (.getEnumStrings(QStyle, QStyle.StandardPixmap).items()) layout = QGridLayout() colNums = i, iconInfo (icons[:]): btn = QPushButton(QApplication.style().standardIcon(i), .format(*iconInfo)) btn.setStyleSheet() layout.addWidget(btn, (i / colNums), i % colNums) .setWindowTitle() .setWindowIcon(QApplication.style().standardIcon(QStyle.SP_DriveFDIcon)) (, cls, enum): s = {} key (cls): value = (cls, key) (value, enum): s[.format(value)] = key s __name__ == : app = QApplication(sys.argv) w = MainWnd() w.show() sys.exit(app.exec_()) 其中,對(duì)內(nèi)置圖標(biāo)的所有索引值是存儲(chǔ)QStyle.StandardPixmap的枚舉變量中的,因此,只需要取出該變量所有可能的取值及其對(duì)應(yīng)的字符串值,即可在按鈕控件上進(jìn)行顯示該圖標(biāo)的信息。本例中通過函數(shù)getEnumStrings獲取StandardPixmap枚舉類型變量的所有索引值及其對(duì)應(yīng)的名稱字符串,在主程序中進(jìn)行解析調(diào)用即可。 從上面的代碼可看出,使用Python+PyQt架構(gòu)進(jìn)行軟件編程,相對(duì)于其它如C語(yǔ)言等高級(jí)編程語(yǔ)言來講,代碼量是極其簡(jiǎn)潔的。 |
|