PyQt4: utilitzant Qt Designer 2: diàlegs i ListWidget
La revisió el 10:44, 7 feb 2013 per Enric (discussió | contribucions) (Es crea la pàgina amb «== Intro == Requisit: realitzar anterior article PyQt4: utilitzant Qt Designer. Tenir en compte l'arquitectura Model-Vista (Model-View): http://doc.qt.digia.com/stab…».)
Intro
Requisit: realitzar anterior article PyQt4: utilitzant Qt Designer.
Tenir en compte l'arquitectura Model-Vista (Model-View): http://doc.qt.digia.com/stable/model-view-programming.html
...TODO...
Main Window
...TODO...
Diàleg
...TODO...
Aplicació: classes derivades i run.py
El codi:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from PyQt4 import *
from main import *
from EntraDades import *
import sys
# http://www.diotavelli.net/PyQtWiki/Adding%20items%20to%20a%20list%20widget
# http://zetcode.com/tutorials/pyqt4/dialogs/
app = 0
class EntraDades(QtGui.QDialog,Ui_EntraDades):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self,parent)
self.setupUi(self)
class Pantalla(QtGui.QMainWindow,Ui_Principal):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self,parent)
self.setupUi(self)
# llista
self.dades = list()
# primer element d'exemple
self.dades.append("hola que tal")
self.regeneraView()
def esborraView(self):
# OJU! no es pot fer amb un for
item = self.llista.takeItem( 0 )
while item:
del item
item = self.llista.takeItem( 0 )
def regeneraView(self):
self.esborraView()
for missatge in self.dades:
item = QtGui.QListWidgetItem( missatge )
self.llista.addItem( item )
# SLOTS
def afegir(self):
# exemple custom dialog
dialeg = EntraDades(self)
ok = dialeg.exec_()
text = dialeg.text.toPlainText()
# EXEMPLE QINPUTDIALOG
#text, ok = QtGui.QInputDialog.getText( self, "Diàleg d'entrada", "Entra dades:" )
# processem
if ok:
self.dades.append( text )
#self.llista.addItem( text )
self.regeneraView()
def eliminar(self):
# cal esborrar de la view:
row = self.llista.currentRow()
item = self.llista.takeItem( row )
del item
# ...i del model
del self.dades[ row ]
def edita(self):
item = self.llista.currentItem()
if item:
self.llista.editItem( item )
def guardar(self):
print "guardar"
def carregar(self):
print "carregar"
def sortir(self):
print "sortint..."
global app
app.quit()
if __name__ == "__main__":
global app
app = QtGui.QApplication(sys.argv)
p = Pantalla()
p.show()
sys.exit(app.exec_())