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