动态生成控件参考上一篇: http://www.cnblogs.com/dcb3688/p/4588814.html

那如何获取动态生成控件的值呢?

比如,动态的生成10个输入框QLineEdit,输入值后,要获取每一个LineEdit的值。 在这里我们通过字典dict{} 来存储控件,循环dict 获取控件的text()

#!/usr/bin/python
# -*-coding:utf-8-*-
from PyQt4.QtGui import *
from PyQt4.QtCore import * # 主入口文件
class MainWidget(QDialog):
def __init__(self, parent=None):
super(MainWidget, self).__init__(parent)
self.setMinimumSize(100, 100)
self.setWindowFlags(Qt.CustomizeWindowHint|Qt.WindowCloseButtonHint)
self.setWindowOpacity(0.9) # 添加头部group
self.headDict = {}
self.headPostArrayKey = 0
self.HeadGroupBox = QGroupBox(u'动态添加控件数据')
self.HeadGroupBox.setMinimumHeight(100) #高度最小值
self.HeadGroupBox.scroll(100,2)
self.HeadAddParam = QPushButton(u'+')
self.headDict[str(self.headPostArrayKey)+'_key'] = QLineEdit()
self.headDict[str(self.headPostArrayKey)+'_value'] = QLineEdit()
self.HeadGroupBoxLayout = QGridLayout()
self.HeadGroupBoxLayout.addWidget(self.HeadAddParam, 0, 0)
self.HeadGroupBoxLayout.addWidget(QLabel(u'Key:'), 1, 0)
self.HeadGroupBoxLayout.addWidget(self.headDict[str(self.headPostArrayKey)+'_key'], 1, 1)
self.HeadGroupBoxLayout.addWidget(QLabel(u'Value:'), 1, 2)
self.HeadGroupBoxLayout.addWidget(self.headDict[str(self.headPostArrayKey)+'_value'], 1, 3)
self.HeadGroupBox.setLayout(self.HeadGroupBoxLayout)
self.HeadAddParam.clicked.connect(self.addHeadParam) # 提交按钮
self.btnPost = QPushButton(u'提交')
self.postbtnLoayout = QHBoxLayout()
self.postbtnLoayout.addStretch()
self.postbtnLoayout.addWidget(self.btnPost)
# Main布局
main_layout = QVBoxLayout()
main_layout.addWidget(self.HeadGroupBox)
main_layout.addLayout(self.postbtnLoayout) # addLayout 添加的是 Layout
main_layout.setSpacing(0)
self.setLayout(main_layout) self.connect(self.btnPost, SIGNAL('clicked()'), self.postData) def postData(self):
self.headdictdata={}
for k, v in self.headDict.items():
temp=k.split('_')
if temp[1]=='key':
if self.headdictdata.has_key(temp[0]):
self.headdictdata[temp[0]]['key'] =str(v.text())
else:
self.headdictdata[temp[0]] = {'key':str(v.text())} elif temp[1]=='value':
if self.headdictdata.has_key(temp[0]):
self.headdictdata[temp[0]]['value'] =str(v.text())
else:
self.headdictdata[temp[0]] = {'value':str(v.text())} print(self.headdictdata) # 添加头部Data
def addHeadParam(self):
sts=str(self.headPostArrayKey+1)
self.headDict[sts+'_key'] = QLineEdit(sts+'name')
self.headDict[sts+'_value'] = QLineEdit(sts+'chrome') self.HeadGroupBoxLayout.addWidget(QLabel(u'Key'))
self.HeadGroupBoxLayout.addWidget(self.headDict[sts+'_key'])
self.HeadGroupBoxLayout.addWidget(QLabel(u'Value'))
self.HeadGroupBoxLayout.addWidget(self.headDict[sts+'_value'])
self.headPostArrayKey+=1 if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
main_widget = MainWidget()
main_widget.show()
sys.exit(app.exec_())

效果:

打印数据:

{'': {'value': '1chrome', 'key': '1name'}, '': {'key': 'keyname', 'value': 'htmls'}, '': {'value': '3chrome', 'key': '3name'}, '': {'value': '2chrome', 'key': '2name'}}

Pyqt 获取动态生成的QLineEdit值的更多相关文章

  1. sql 中获取最后生成的标识值 IDENT_CURRENT ,@@IDENTITY ,SCOPE_IDENTITY 的用法和区别

    原文:sql 中获取最后生成的标识值 IDENT_CURRENT ,@@IDENTITY ,SCOPE_IDENTITY 的用法和区别 IDENT_CURRENT 返回为任何会话和任何作用域中的指定表 ...

  2. AngularJS中获取ng-repeat动态生成的ng-model值

    需求:通过ng-repeat动态生成的CheckBox,实现勾选控制对应的批次号.如图: html: <div class="clearfix"> <div cl ...

  3. DAO以及获取自动生成主键值

    package com.alibaba.sql; import java.lang.reflect.InvocationTargetException; import java.sql.Connect ...

  4. jQuery获取动态生成的元素

    需求描述:页面上可以动态添加数据,比如table,点击按钮可以动态添加行.又或页面 加载时table数据是通过ajax从后台获取的.而这时我们想要获取其中的某个值,又该如何获取呢? 如果是要通过某个事 ...

  5. C# 反射(GetType) 获取动态Json对象属性值的方法

    之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊! 然后今天我再上网找了找,被我找到了,跟大家分享一下. 其实原理并不复 ...

  6. C# 动态代码生成控件后其他事件不能获取该控件的值

    1.新建web项目,添加两个Button控件,结果如图. 2.Button按钮控件点击事件代码如下 protectedvoid Button1_Click(object sender, EventAr ...

  7. 关于动态生成dom绑定事件失效的原因

    之前做项目都是直接用jquery的bind绑定事件,不过当时都不是动态生成dom元素,而是已经页面中原本存在的dom元素进行事件绑定,最近在测试给动态生成的dom绑定事件的时候发现事件失效,于是就测试 ...

  8. Angularjs给动态生成的元素绑定事件

    //获取动态生成的元素 getJqforAnguar:function(jqid){ angular.element(document).injector().invoke(function($com ...

  9. 动态生成tr,并将其下控件的值拼接后传到后台并保存

    有两个表(主表和子表),现在需要根据主表某一个字段动态的生成记录(一条记录就一个tr),然后再讲tr下控件的各个值取出来,传到后台,并保存到子表. html代码: <!--#for(Record ...

随机推荐

  1. 常见排序java实现

    public class Sort { public static void main(String[] args) { int[] data = {49,38,65,97,76,13,27,49}; ...

  2. 通过Knockout.js + ASP.NET Web API构建一个简单的CRUD应用

    REFERENCE FROM : http://www.cnblogs.com/artech/archive/2012/07/04/Knockout-web-api.html 较之面向最终消费者的网站 ...

  3. 深入浅出RxJava

    深入浅出RxJava(一:基础篇) 深入浅出RxJava(二:操作符) 深入浅出RxJava三--响应式的好处 深入浅出RxJava四-在Android中使用响应式编程 RxJava 到底是什么? 一 ...

  4. MFC的多线程操作

    记得用MFC做了一个图像自动修复软件,当时没有多线程操作这一概念,由于图像修复算法比较复杂,因此,当执行图像修复时,程序就像卡死了似得而不能做其他操作.其实MFC对这种情况有一种很好地解决方案,那就是 ...

  5. SHOI2016游记&滚粗记&酱油记

    Day0 学校刚期中考完,全科血崩,感觉这次真要考不到一本线了tat 晚上写了个可持久化trie的题,也懒得敲板子(上个礼拜都敲过了),就碎叫了 Day1 上午起床吃饭水群看球,吃完中饭就去考场了. ...

  6. jquery生成元素注册事件无效,及事件委托的使用

    在页面加载完成之后,我们在页面操作用js生成html代码到页面,动态的添加元素带页面上 但是,这里可能很多人就必须碰到的一个问题就出现了,当你之后动态添加了元素到页面上,发现这个元素的绑定事件无效,如 ...

  7. Java程序员

    从生存.制胜.发展三个方面入手,为大家展示出程序员求职与工作的一幅3D全景图像.本书中既有在公司中的生存技巧,又有高手达人的进阶策略,既有求职攻略的按图索骥,又有入职后生产环境的破解揭秘. 书中浓缩了 ...

  8. Java中vector的使用详解

    Vector 可实现自动增长的对象数组. java.util.vector提供了向量类(vector)以实现类似动态数组的功能.在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以大大提 ...

  9. 解决ArcGIS安装之后出现的Windows installer configures问题

    ----Please wait while Windows installer configures ArcGIS Desktop Error Message错误信息 When launching A ...

  10. mui jquery 同时使用

    (function ($, doc, $$) { $.init(); $.ready(function () { var cityPicker = new $.PopPicker({ layer: } ...