# -*- coding: utf-8 -*-

__author__ = 'Administrator'

import sys

from PyQt4.QtCore import *

from PyQt4.QtGui import *

MAC = "qt_mac_set_native_menubar" in dir()

class StringListDlg(QDialog):

def __init__(self, name, stringlist=None, parent=None):

super(StringListDlg, self).__init__(parent)

self.name = name

self.listWidget = QListWidget()

if stringlist is not None:

self.listWidget.addItems(stringlist)

self.listWidget.setCurrentRow(0)

buttonLayout = QVBoxLayout()

for text, slot in (("&Add...", self.add),

("&Edit...", self.edit),

("&Remove...", self.remove),

("&Up", self.up),

("&Down", self.down),

("&Sort", self.listWidget.sortItems),

("Close", self.accept)):

button = QPushButton(text)

if not MAC:

button.setFocusPolicy(Qt.NoFocus)

if text == "Close":

buttonLayout.addStretch()

buttonLayout.addWidget(button)

self.connect(button, SIGNAL("clicked()"), slot)

layout = QHBoxLayout()

layout.addWidget(self.listWidget)

layout.addLayout(buttonLayout)

self.setLayout(layout)

self.setWindowTitle("Edit %s List" % self.name)

def add(self):

row = self.listWidget.currentRow()

title = "Add %s" % self.name

string, ok = QInputDialog.getText(self, title, title)

if ok and not string.isEmpty():

self.listWidget.insertItem(row, string)

def edit(self):

row = self.listWidget.currentRow()

item = self.listWidget.item(row)

if item is not None:

title = "Edit %s" % self.name

string, ok = QInputDialog.getText(self, title, title,

QLineEdit.Normal, item.text())

if ok and not string.isEmpty():

item.setText(string)

def remove(self):

row = self.listWidget.currentRow()

item = self.listWidget.item(row)

if item is None:

return

reply = QMessageBox.question(self, "Remove %s" % self.name,

"Remove %s `%s'?" % (

self.name, unicode(item.text())),

QMessageBox.Yes|QMessageBox.No)

if reply == QMessageBox.Yes:

item = self.listWidget.takeItem(row)

del item

def up(self):

row = self.listWidget.currentRow()

if row >= 1:

item = self.listWidget.takeItem(row)

self.listWidget.insertItem(row - 1, item)

self.listWidget.setCurrentItem(item)

def down(self):

row = self.listWidget.currentRow()

if row < self.listWidget.count() - 1:

item = self.listWidget.takeItem(row)

self.listWidget.insertItem(row + 1, item)

self.listWidget.setCurrentItem(item)

def reject(self):

self.accept()

def accept(self):

self.stringlist = QStringList()

for row in range(self.listWidget.count()):

self.stringlist.append(self.listWidget.item(row).text())

self.emit(SIGNAL("acceptedList(QStringList)"), self.stringlist)

QDialog.accept(self)

if __name__ == "__main__":

fruit = ["Banana", "Apple", "Elderberry", "Clementine", "Fig",

"Guava", "Mango", "Honeydew Melon", "Date", "Watermelon",

"Tangerine", "Ugli Fruit", "Juniperberry", "Kiwi",

"Lemon", "Nectarine", "Plum", "Raspberry", "Strawberry",

"Orange"]

app = QApplication(sys.argv)

form = StringListDlg("Fruit", fruit)

form.exec_()

print "\n".join([unicode(x) for x in form.stringlist])

如图:

pyqt学习之列表管理器(网友提供)的更多相关文章

  1. jmeter压测学习6-HTTP Cookie管理器

    前言 web网站的请求大部分都有cookies,jmeter的HTTP Cookie管理器可以很好的管理cookies. 我用的 jmeter5.1 版本,直接加一个HTTP Cookie管理器放到请 ...

  2. Jmeter压测学习5---HTTP Cookie管理器

    我司项目暂时不需要,直接转载:https://www.cnblogs.com/yoyoketang/p/11963342.html 前言 web网站的请求大部分都有cookies,jmeter的HTT ...

  3. Android布局管理器-从实例入手学习相对布局管理器的使用

    场景 AndroidStudio跑起来第一个App时新手遇到的那些坑: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103797 ...

  4. com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: 为队列管理器提供的安全性认证无效

    com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: 为队列管理器“zm_queue_manager”提供的安全性认证无效, ...

  5. 【XLL 文档翻译】【第1部分】 Add-in 管理器 和 XLL 接口函数

    xlAddInManagerInfo/xlAddInManagerInfo12 在 Excel 会话中,每一次调用 Add-In 管理器时,系统会调用这两个函数.此函数可以在 Add-In 管理器中提 ...

  6. [置顶] Android布局管理器 - 详细解析布局实现

    布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以适配不同手机屏幕的分辨率,尺寸大小; 布局管理器之间的继承关系 : 在上面的UML图中可以看出, 绝对布局 帧布局 网格布局 相 ...

  7. 【Android 应用开发】AndroidUI设计之 布局管理器 - 详细解析布局实现

    写完博客的总结 : 以前没有弄清楚的概念清晰化 父容器与本容器属性 : android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器 ...

  8. <转>jmeter(十九)HTTP属性管理器

    本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...

  9. 跟我学Spring3(9.2):Spring的事务之事务管理器

    原文出处: 张开涛9.2.1 概述 Spring框架支持事务管理的核心是事务管理器抽象,对于不同的数据访问框架(如Hibernate)通过实现策略接口PlatformTransactionManage ...

随机推荐

  1. (转)介绍几个C#正则表达式工具

    推荐三个C#正则表达式工具,理由如下 第一个C#正则表达式工具,REGEX 这个C#正则表达式工具优点是中文的,提供了一些示例 第二个C#正则表达式工具,REGEXBUDDY 这是一个真正专业的REG ...

  2. Fiddler使用笔记

    http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html#basic   1.filter的使用,跟踪某个网站的访问,例如:hr. ...

  3. csv 导入到 access中去

    Csv中有500万数据,导入到Access中去,每6万条数据为1Table 先是参照着http://support.microsoft.com/kb/257819/zh-cn来写 1.找不到可安装的  ...

  4. 业余编程 SQL 编程学习——1 (SQL Server 2008 R2)

    1.建立test数据库: 2.创建test1数据表: test1表属性如下: 其中,ID字段设置为标识增量,增量种子为1: 这个实例是实现从第一行数据开始,将每一行最后一个字段值加下一行第二个字段值再 ...

  5. CSS学习笔记总结和技巧

    跟叶老师说项目,他叫我写一个静态首页,看起来挺简单的,但是下手才发现在真的不会怎么下手啊,什么模型啊模块啊都不懂,写毛线啊!! 如图:页面下拉还有侧栏,中间内容等. 可是答应跟老师做了,不能怂啊,于是 ...

  6. sql解释执行顺序

    一.查询的逻辑执行顺序 (1) FROM left_table (3) join_type JOIN right_table (2) ON join_condition (4) WHERE where ...

  7. js图片实时加载

    浏览大型网站,特别是图片比较多的图片,如大型的电商网站,你会发现处了第一屏外,往下滚动的时候图片才加载出来,没必要一开始加载就要把全部图片加载出来,这样子打开网面的速度得到了很好提高.以下是笔者目前所 ...

  8. EC2.0开启多规格后,编辑无法获取规格数据

    我们其实一共碰到2个问题, 1. 一个是弹出了货品编辑画面,但是货品的明细没有2.有货品明细但是货品明细各个字段都是空的, 上面2种情况数据库都是有值的. 第一个问题解决方案: 修改html中的JS ...

  9. flask开发restful api系列(5)-短信验证码

    我们现在开发app,注册用户的时候,不再像web一样,发送到个人邮箱了,毕竟个人邮箱在移动端填写验证都很麻烦,一般都采用短信验证码的方式.今天我们就讲讲这方面的内容. 首先,先找一个平台吧.我们公司找 ...

  10. secureCRT命令大全

    常用命令:一.ls 只列出文件名-a:列出所有文件,包含隐藏文件.(ll -a)-l:列表形式,包含文件的绝大部分属性.(ll)-r:递归显示.(ll -r)--help:此命令的帮助.(ll --h ...