码迷,mamicode.com
首页 > 其他好文 > 详细

pyqt学习之列表管理器(网友提供)

时间:2014-10-13 12:55:29      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   os   ar   for   sp   2014   on   

# -*- 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])

如图:bubuko.com,布布扣

pyqt学习之列表管理器(网友提供)

标签:blog   http   io   os   ar   for   sp   2014   on   

原文地址:http://www.cnblogs.com/mhxy13867806343/p/4021762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!