PyQt4编程之简短地做出多个选择框
生活随笔
收集整理的這篇文章主要介紹了
PyQt4编程之简短地做出多个选择框
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
先看效果圖
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 我們要達(dá)到的目標(biāo)是做出一個(gè)對(duì)話框,這個(gè)對(duì)話框是供用戶選擇文件的,左邊的編輯框可以顯示所選文件的地址,右邊的按鈕可以彈出選擇對(duì)話框。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先上代碼 import sys from PyQt4.QtCore import * from PyQt4.QtGui import *class Dialog(QDialog):def __init__(self,parent=None):super(Dialog,self).__init__(parent)self.linDic=dict.fromkeys(('ld1','ld2','ld3','ld4','ld5','ld6'),1)self.btnDic=dict.fromkeys(('ld1','ld2','ld3','ld4','ld5','ld6'),1)keys=self.linDic.keys()grid=QGridLayout();r=0for key in keys:self.linDic[key]=QLineEdit()self.btnDic[key]=QPushButton('...')grid.addWidget(self.linDic[key],r,0)grid.addWidget(self.btnDic[key],r,1)r+=1self.connect(self.btnDic[key],SIGNAL("clicked()"),self.showMsg)self.setLayout(grid)def showMsg(self):filename = QFileDialog.getOpenFileName(self, 'Open file','/home')btn=self.sender()keys = self.linDic.keys()for key in keys:if self.btnDic[key]==btn:breakself.linDic[key].setText(filename)app =QApplication(sys.argv) dialog=Dialog() dialog.show() app.exec_() ------------------------- 結(jié)構(gòu)分析: ------------------------- 1.利用fromkeys函數(shù)創(chuàng)建出兩個(gè)字典,如若不懂這個(gè)函數(shù),請(qǐng)參考點(diǎn)擊打開(kāi)鏈接 2.在for循環(huán)里面重新給字典的每個(gè)鍵對(duì)應(yīng)的值設(shè)置成相應(yīng)的控件,并完成布局,以及信號(hào)和槽的設(shè)置 3.在showMsg函數(shù)里面讀取文件路徑并賦給該按鈕對(duì)應(yīng)的編輯框。 ------------------------- 關(guān)鍵函數(shù)分析: ------------------------- 這個(gè)對(duì)話框是一般水平的人都能寫出來(lái)的,大不了一個(gè)一個(gè)控件寫,一個(gè)一個(gè)信號(hào)與槽寫,這樣是很容易實(shí)現(xiàn)的,但是如何用簡(jiǎn)短的代碼來(lái)完成這些重復(fù)性很強(qiáng)的操作呢? 我首先想到的是用字典來(lái)存儲(chǔ)這些控件,于是用到了字典初始化方式中的一種“fromkeys",然后在for循環(huán)里面進(jìn)行布局,鏈接。但是當(dāng)進(jìn)行到將讀取到的文件路徑賦值給該按鈕對(duì)應(yīng)的編輯框時(shí),當(dāng)時(shí)我被難倒了,不知道該怎么做。也嘗試了一些其他的方法,但是都不行。后來(lái)經(jīng)查閱資料,閱覽一些書籍,發(fā)現(xiàn)了sender()這個(gè)函數(shù),利用這個(gè)函數(shù)能發(fā)現(xiàn)到底是來(lái)自哪個(gè)QPushButton對(duì)象在調(diào)用這個(gè)showMsg,于是這個(gè)問(wèn)題就解決了。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 我們要達(dá)到的目標(biāo)是做出一個(gè)對(duì)話框,這個(gè)對(duì)話框是供用戶選擇文件的,左邊的編輯框可以顯示所選文件的地址,右邊的按鈕可以彈出選擇對(duì)話框。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先上代碼 import sys from PyQt4.QtCore import * from PyQt4.QtGui import *class Dialog(QDialog):def __init__(self,parent=None):super(Dialog,self).__init__(parent)self.linDic=dict.fromkeys(('ld1','ld2','ld3','ld4','ld5','ld6'),1)self.btnDic=dict.fromkeys(('ld1','ld2','ld3','ld4','ld5','ld6'),1)keys=self.linDic.keys()grid=QGridLayout();r=0for key in keys:self.linDic[key]=QLineEdit()self.btnDic[key]=QPushButton('...')grid.addWidget(self.linDic[key],r,0)grid.addWidget(self.btnDic[key],r,1)r+=1self.connect(self.btnDic[key],SIGNAL("clicked()"),self.showMsg)self.setLayout(grid)def showMsg(self):filename = QFileDialog.getOpenFileName(self, 'Open file','/home')btn=self.sender()keys = self.linDic.keys()for key in keys:if self.btnDic[key]==btn:breakself.linDic[key].setText(filename)app =QApplication(sys.argv) dialog=Dialog() dialog.show() app.exec_() ------------------------- 結(jié)構(gòu)分析: ------------------------- 1.利用fromkeys函數(shù)創(chuàng)建出兩個(gè)字典,如若不懂這個(gè)函數(shù),請(qǐng)參考點(diǎn)擊打開(kāi)鏈接 2.在for循環(huán)里面重新給字典的每個(gè)鍵對(duì)應(yīng)的值設(shè)置成相應(yīng)的控件,并完成布局,以及信號(hào)和槽的設(shè)置 3.在showMsg函數(shù)里面讀取文件路徑并賦給該按鈕對(duì)應(yīng)的編輯框。 ------------------------- 關(guān)鍵函數(shù)分析: ------------------------- 這個(gè)對(duì)話框是一般水平的人都能寫出來(lái)的,大不了一個(gè)一個(gè)控件寫,一個(gè)一個(gè)信號(hào)與槽寫,這樣是很容易實(shí)現(xiàn)的,但是如何用簡(jiǎn)短的代碼來(lái)完成這些重復(fù)性很強(qiáng)的操作呢? 我首先想到的是用字典來(lái)存儲(chǔ)這些控件,于是用到了字典初始化方式中的一種“fromkeys",然后在for循環(huán)里面進(jìn)行布局,鏈接。但是當(dāng)進(jìn)行到將讀取到的文件路徑賦值給該按鈕對(duì)應(yīng)的編輯框時(shí),當(dāng)時(shí)我被難倒了,不知道該怎么做。也嘗試了一些其他的方法,但是都不行。后來(lái)經(jīng)查閱資料,閱覽一些書籍,發(fā)現(xiàn)了sender()這個(gè)函數(shù),利用這個(gè)函數(shù)能發(fā)現(xiàn)到底是來(lái)自哪個(gè)QPushButton對(duì)象在調(diào)用這個(gè)showMsg,于是這個(gè)問(wèn)題就解決了。
總結(jié)
以上是生活随笔為你收集整理的PyQt4编程之简短地做出多个选择框的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python Qt GUI快速编程第六章
- 下一篇: PtQt4标准对话框——QFileDia