1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui
class ListPanel(QtGui.QWidget):
def __init__(self, parent=None):
super(ListPanel, self).__init__(parent)
self.resize(300, 350)
self.gridbox = QtGui.QGridLayout(self)
self.gridbox.setMargin(0)
self.scrollArea = QtGui.QScrollArea(self)
self.scrollArea.setWidgetResizable(True)
self.scrollContents = QtGui.QWidget(self.scrollArea)
self.vbox = QtGui.QVBoxLayout(self.scrollContents)
self.vbox.setContentsMargins(2, 0, 2, 0)
self.vbox_2 = QtGui.QVBoxLayout()
spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum,
QtGui.QSizePolicy.Expanding)
self.vbox_2.addItem(spacerItem)
self.vbox.addLayout(self.vbox_2)
self.scrollArea.setWidget(self.scrollContents)
self.gridbox.addWidget(self.scrollArea, 0, 0, 1, 1)
self.items = []
def add_item(self, name, title, icon=None):
item = ListItem(self)
item.name_lbl.setText(name)
item.title_lbl.setText(title)
if icon is not None:
item.pict.setPixmap(QtGui.QPixmap(icon))
self.vbox_2.insertWidget(len(self.items), item)
self.items.append(item)
class ListItem(QtGui.QWidget):
def __init__(self, parent=None):
super(ListItem, self).__init__(parent)
self.hbox = QtGui.QHBoxLayout(self)
self.hbox.setMargin(0)
self.hbox_1 = QtGui.QHBoxLayout()
self.pict = QtGui.QLabel(self)
self.pict.setMaximumSize(QtCore.QSize(48, 48))
self.hbox_1.addWidget(self.pict)
self.vbox = QtGui.QVBoxLayout()
self.name_lbl = QtGui.QLabel(self)
self.vbox.addWidget(self.name_lbl)
self.title_lbl = QtGui.QLabel(self)
self.vbox.addWidget(self.title_lbl)
self.hbox_1.addLayout(self.vbox)
self.hbox.addLayout(self.hbox_1)
def set_people():
ui.add_item('C. Chaplin', 'Philosophe', 'chemin/icone')
ui.add_item('G. Depardieu', 'Contribuable belge', 'chemin/icone')
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
ui = ListPanel()
ui.show()
# On crée deux items
set_people()
sys.exit(app.exec_()) |
Partager