输入对话框基于PyQt4的输入对话框

在写这篇文章之前,xxx已经写过了几篇关于改输入对话框主题的文章,想要了解的朋友可以去翻一下之前的文章

    天今做了个基于PyQt4的输入对话框.

    

在程序输入中,有时会要求同时变改多个参数值,而且类型也不尽相同,

    

这时面下的模块比拟完全的处理了这个题问.

    

先看个示例吧.比如我们有三个参数:

    

一个是a,要求输入的是数整(int),b要求输入浮点数(float),还有一个字符串c,

values={'a':100,'b':3.5,'c':'Strings'}  
title='QInputBox for Setting Values:'  
RValues=QInputBox(values,title)
print(RValues)

#~ {'a': 100, 'c': 'Strings', 'b': 3.5}

    示显的面界如下:

    

输入和对话框

    QInputBox模块的码代如下:

    每日一道理
天今阳光很好,坐在窗前,看窗外如此晴朗的天感觉特别舒心,雨过天晴后的世界总给人一种明媚,仿佛阳光照耀在“心田”上空,让前些天被风雨践踏的花朵重新得到爱的关怀,重现生命的活力!
#-*- coding:utf-8 -*-
#~ #--------------------------------------------------------------------------------
#~ module:wlab
#~ FileName=WPyQt4Input.py
#~ Funciton:PyQt4的输入对话框
#~ author:吴徐平
#~ Date:2013-05-03
#~ Email:539688300@qq.com
#~ #-------------------------------------------------
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore

class QInputDialog(QtGui.QDialog):
    def __init__(self, values,title='Setting Values:',parent=None):
        '''
        #~ >>>values={'String':'This is String','float':3.5,'int':15}
        #~ >>>title='QInputBox for Setting Values:'
        #~>>>dlg = QInputDialog(values=values,title=title) 
        #~ >>>if ( dlg.exec_() == QtGui.QDialog.Accepted):
                        RValues = dlg.GetModifiedValues()    
                    else:
                        RValues = dlg.GetOriginValue()      
        '''        
        QtGui.QDialog.__init__(self, parent=parent)
        self.setWindowTitle(title)

        self.OriginValues=values.copy()
        self.ModifiedValues=values.copy()
        
        self.vbox = QtGui.QVBoxLayout()
        cnt=0
        for key in self.ModifiedValues:
            keyStr=str(key)
            label=keyStr+' :'
            KeyLabel=QtGui.QLabel(label)
            ValueLineEdit=QtGui.QLineEdit(str(self.ModifiedValues[key]))
            #~ #为件控设置一个名字,方便使用函数findchild()查找
            ValueLineEdit.setObjectName('VLE'+str(cnt))            
            hbox = QtGui.QHBoxLayout()
            hbox.addWidget(KeyLabel)
            hbox.addWidget(ValueLineEdit)            
            self.vbox.addLayout(hbox)
            cnt=cnt+1
        
        self.btn_OK=QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok)
        self.btn_Cancel=QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Cancel)
        
        self.btn_OK.clicked.connect(self.accept )
        self.btn_Cancel.clicked.connect(self.reject) 
        
        hbox = QtGui.QHBoxLayout()   
        hbox.addWidget(self.btn_OK)
        hbox.addWidget(self.btn_Cancel)
        self.vbox.addLayout(hbox)
        self.setLayout(self.vbox)
        
        

    def GetOriginValue(self):
        '''
        #~ if the user click btn_Cancel,then return OriginValues
        '''
        return self.OriginValues
    
    def GetModifiedValues(self):
        '''
        #~ if the user click btn_OK,then return self.ModifiedValues
        '''
        cnt=0
        for key in self.ModifiedValues:
            keyStr=str(key)
            VLEObjectName='VLE'+str(cnt)
            VLE=self.findChild((QtGui.QLineEdit, ),VLEObjectName)
            cnt=cnt+1
            ovk=self.ModifiedValues[key]
            if(type(ovk)==int):
                self.ModifiedValues[key]=int(VLE.text())
            elif(type(ovk)==float):
                self.ModifiedValues[key]=float(VLE.text())
            else:
                self.ModifiedValues[key]=str(VLE.text()) 
            
        return self.ModifiedValues

#~ #封装好的参数输入对话框
def QInputBox(values,title='Setting Values:'):
    '''
    #~ >>>values={'String':'This is String','float':3.5,'int':15}
    #~ >>>title='QInputBox for Setting Values:'
    #~ >>>print(QInputBox(values,title))
    '''    
    app = QtGui.QApplication(sys.argv)
    dlg = QInputDialog(values=values,title=title)    
    if ( dlg.exec_() == QtGui.QDialog.Accepted):
        RValues = dlg.GetModifiedValues()    
    else:
        RValues = dlg.GetOriginValue()
    return RValues

#~ #-------------------------------------------------
if __name__ == '__main__': 
    values={'String':'This is String','float':3.5,'int':15}
    title='QInputBox for Setting Values:'
    print(QInputBox(values,title))
    #print(QInputBox(values))

    运行效果如下.

    

    输入和对话框

    对话框会主动根据多个Values的值主动成生窗口件控.

文章结束给大家分享下程序员的一些笑话语录: 有一天,一个男人穿越森林的时候,听到一个细微的声音叫住他。他低头一看,是一只青蛙。
“如果你亲我一下,我会变成一个美丽的公主哦。”男人一言不发,把青蛙捡起来,放入口袋。
“如果你亲我一下,我会变成一个美丽的公主哦。而且,我会告诉我遇到的每一个人,你是多么聪明和勇敢,你是我的英雄。”男人把青蛙拿出来,对着它微微一笑,又把它放回口袋。
“如果你亲我一下,我会变成一个美丽的公主,然后我愿意成为你的爱人一星期。”男人又把青蛙拿出来,对着它微微一笑,把它放回口袋。
“如果你亲我一下,我会变成一个美丽的公主,然后我愿意成为你的爱人一年,而且你可以对我做任何事。”再一次,男人把青蛙拿出来,对着它微微一笑,又把它放回口袋。
  最后,青蛙无力地问:“我开出了这么好的条件,为什么你还不肯吻我?”男人说:“我是一个程序员,我可没时间和什么公主鬼混。不过,拥有一个会说话的青蛙,倒是蛮酷的。”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值