datetime:2019/5/23 15:25
author:nzb
列表部件小示例

from PyQt5.QtWidgets import QApplication, QDialog, QLineEdit, QMessageBox, QInputDialog, QListWidget, QVBoxLayout, QPushButton, QHBoxLayout
from PyQt5.QtGui import QIcon
from PyQt5 import QtGui
import sys
class ProgrammingDialog(QDialog):
    def __init__(self, name, prolist = None):
        super(ProgrammingDialog, self).__init__()
        self.setWindowTitle("PyQt5 simple List project")
        self.setWindowIcon(QtGui.QIcon('../img/home.ico'))
        self.name = name
        self.list = QListWidget()
        if prolist is not None:
            self.list.addItems(prolist)
            self.list.setCurrentRow(0)
        vbox = QVBoxLayout()
        for text, slot in (("Add", self.Add),
                           ("Edit", self.Edit),
                           ("Remove", self.Remove),
                           ("Sort", self.Sort),
                           ("Close", self.Close)):
            button = QPushButton(text)
            button.clicked.connect(slot)
            vbox.addWidget(button)
        hbox = QHBoxLayout()
        hbox.addWidget(self.list)
        hbox.addLayout(vbox)
        self.setLayout(hbox)
    def Add(self):
        row = self.list.currentRow()
        title = "Add {0}".format(self.name)
        string, ok = QInputDialog.getText(self, title, title)
        if ok and string is not None:
            self.list.insertItem(row, string)
    def Edit(self):
        row = self.list.currentRow()
        item = self.list.item(row)
        if item is not None:
            title = "Edit {0}".format(self.name)
            string, ok = QInputDialog.getText(self, title, title,
                                              QLineEdit.Normal, item.text())
            if ok and string is not None:
                item.setText(string)
    def Remove(self):
        row = self.list.currentRow()
        item = self.list.item(row)
        if item is None:
            return
        reply = QMessageBox.question(self, "Remove{0}".format(
            self.name), "Remove{0} '{1}'?".format(
            self.name, str(item.text())),
                                     QMessageBox.Yes | QMessageBox.No)
        if reply == QMessageBox.Yes:
            item = self.list.takeItem(row)
            del item
    def Sort(self):
        self.list.sortItems()
    def Close(self):
        self.close()
        
if __name__ == '__main__':
    programming = ["Python", "Java", "PHP", "C++"]
    app = QApplication(sys.argv)
    dialog = ProgrammingDialog("Language", programming)
    dialog.exec_()