Pyqt 获取动态生成的QLineEdit值
动态生成控件参考上一篇: 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值的更多相关文章
- sql 中获取最后生成的标识值 IDENT_CURRENT ,@@IDENTITY ,SCOPE_IDENTITY 的用法和区别
原文:sql 中获取最后生成的标识值 IDENT_CURRENT ,@@IDENTITY ,SCOPE_IDENTITY 的用法和区别 IDENT_CURRENT 返回为任何会话和任何作用域中的指定表 ...
- AngularJS中获取ng-repeat动态生成的ng-model值
需求:通过ng-repeat动态生成的CheckBox,实现勾选控制对应的批次号.如图: html: <div class="clearfix"> <div cl ...
- DAO以及获取自动生成主键值
package com.alibaba.sql; import java.lang.reflect.InvocationTargetException; import java.sql.Connect ...
- jQuery获取动态生成的元素
需求描述:页面上可以动态添加数据,比如table,点击按钮可以动态添加行.又或页面 加载时table数据是通过ajax从后台获取的.而这时我们想要获取其中的某个值,又该如何获取呢? 如果是要通过某个事 ...
- C# 反射(GetType) 获取动态Json对象属性值的方法
之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊! 然后今天我再上网找了找,被我找到了,跟大家分享一下. 其实原理并不复 ...
- C# 动态代码生成控件后其他事件不能获取该控件的值
1.新建web项目,添加两个Button控件,结果如图. 2.Button按钮控件点击事件代码如下 protectedvoid Button1_Click(object sender, EventAr ...
- 关于动态生成dom绑定事件失效的原因
之前做项目都是直接用jquery的bind绑定事件,不过当时都不是动态生成dom元素,而是已经页面中原本存在的dom元素进行事件绑定,最近在测试给动态生成的dom绑定事件的时候发现事件失效,于是就测试 ...
- Angularjs给动态生成的元素绑定事件
//获取动态生成的元素 getJqforAnguar:function(jqid){ angular.element(document).injector().invoke(function($com ...
- 动态生成tr,并将其下控件的值拼接后传到后台并保存
有两个表(主表和子表),现在需要根据主表某一个字段动态的生成记录(一条记录就一个tr),然后再讲tr下控件的各个值取出来,传到后台,并保存到子表. html代码: <!--#for(Record ...
随机推荐
- Thinking in java学习笔记之String的不可变性
为了提高效率,可以使用StringBuffer或StringBuilder 1. 在执行速度方面的比较:StringBuilder > StringBuffer 2. StringBuffer与 ...
- EL表达式怎么获取Map的动态key?
缘由 El表达式在调用Map的时候,后台传过来的Map的key不一定是一个固定的值,需要根据另外一个对象的id作为key来put,或者更加复杂的组合id+"string"作为一个k ...
- spring-事务管理
一个数据库事务是一个被视为单一的工作单元的操作序列.这些操作应该要么完整地执行,要么完全不执行.事务管理是一个重要组成部分,RDBMS 面向企业应用程序,以确保数据完整性和一致性.事务的概念可以描述为 ...
- HD2222 Keywords Search(AC自动机入门题)
然而还不是很懂=_= #include <iostream> #include <cstring> #include <algorithm> #include &l ...
- 不把C作为第一门语言是个好主意么
---------------------------------------------------------------------------------- 不把C作为第一门语言是个好主意 ...
- Python学习笔记——集合类型
集合类型有两种不同的类型——可变集合(set)和不可变集合(frozenset) 可变集合不是可哈希的,不能用作字典的键,也不能用做其他集合中的元素 不可变集合是有哈希值的,能被用做字典的键或者是作为 ...
- Python学习笔记——列表
1.创建列表类型数据并给其赋值 >>> aList = [123,'abc',4.56,['inner','list'],7-9j] >>> aList [123, ...
- javascript数据结构与算法---栈
javascript数据结构与算法---栈 在上一遍博客介绍了下列表,列表是最简单的一种结构,但是如果要处理一些比较复杂的结构,列表显得太简陋了,所以我们需要某种和列表类似但是更复杂的数据结构---栈 ...
- linux 根据文件大小查找文件
inux下的find命令用来查找文件,通过man find就知道它是无所不能的.所以按照文件大小来查找文件就不在话下.从man find搜索size,可以看到如下信息: -size n[cwbkMG] ...
- redis中的key设置过期时间
EXPIRE key seconds 为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除. 在 Redis 中,带有生存时间的 key 被称为『易失的 ...