PyQt4编程之简短地做出多个选择框
生活随笔
收集整理的這篇文章主要介紹了
PyQt4编程之简短地做出多个选择框
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先看效果圖
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 我們要達到的目標是做出一個對話框,這個對話框是供用戶選擇文件的,左邊的編輯框可以顯示所選文件的地址,右邊的按鈕可以彈出選擇對話框。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先上代碼 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_() ------------------------- 結構分析: ------------------------- 1.利用fromkeys函數創建出兩個字典,如若不懂這個函數,請參考點擊打開鏈接 2.在for循環里面重新給字典的每個鍵對應的值設置成相應的控件,并完成布局,以及信號和槽的設置 3.在showMsg函數里面讀取文件路徑并賦給該按鈕對應的編輯框。 ------------------------- 關鍵函數分析: ------------------------- 這個對話框是一般水平的人都能寫出來的,大不了一個一個控件寫,一個一個信號與槽寫,這樣是很容易實現的,但是如何用簡短的代碼來完成這些重復性很強的操作呢? 我首先想到的是用字典來存儲這些控件,于是用到了字典初始化方式中的一種“fromkeys",然后在for循環里面進行布局,鏈接。但是當進行到將讀取到的文件路徑賦值給該按鈕對應的編輯框時,當時我被難倒了,不知道該怎么做。也嘗試了一些其他的方法,但是都不行。后來經查閱資料,閱覽一些書籍,發現了sender()這個函數,利用這個函數能發現到底是來自哪個QPushButton對象在調用這個showMsg,于是這個問題就解決了。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 我們要達到的目標是做出一個對話框,這個對話框是供用戶選擇文件的,左邊的編輯框可以顯示所選文件的地址,右邊的按鈕可以彈出選擇對話框。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先上代碼 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_() ------------------------- 結構分析: ------------------------- 1.利用fromkeys函數創建出兩個字典,如若不懂這個函數,請參考點擊打開鏈接 2.在for循環里面重新給字典的每個鍵對應的值設置成相應的控件,并完成布局,以及信號和槽的設置 3.在showMsg函數里面讀取文件路徑并賦給該按鈕對應的編輯框。 ------------------------- 關鍵函數分析: ------------------------- 這個對話框是一般水平的人都能寫出來的,大不了一個一個控件寫,一個一個信號與槽寫,這樣是很容易實現的,但是如何用簡短的代碼來完成這些重復性很強的操作呢? 我首先想到的是用字典來存儲這些控件,于是用到了字典初始化方式中的一種“fromkeys",然后在for循環里面進行布局,鏈接。但是當進行到將讀取到的文件路徑賦值給該按鈕對應的編輯框時,當時我被難倒了,不知道該怎么做。也嘗試了一些其他的方法,但是都不行。后來經查閱資料,閱覽一些書籍,發現了sender()這個函數,利用這個函數能發現到底是來自哪個QPushButton對象在調用這個showMsg,于是這個問題就解決了。
總結
以上是生活随笔為你收集整理的PyQt4编程之简短地做出多个选择框的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python Qt GUI快速编程第六章
- 下一篇: PtQt4标准对话框——QFileDia