PDA

View Full Version : [Python] PyQt4 e qt designer


ficofico
04-05-2009, 18:25
Ciao a tutti, sto cercando di capire i fondamenti della programmazione python, nel tempo perso sto guardando un pò l'interfacciamento tra python e i programmi di creazione visuale di gui.

Sono su gentoo, come ide uso Geany,e ho le Qt4 installate.

Io vorrei solo capire quali sono le istruzioni necessarie per fare vedere la mia gui, digitando python nomescript.py

Inannzi tutto ho creato una gui minimale con qt designer e l'ho trasformata in oggetto grazie a Pyuic4 e questo è il codice:

gui.py :

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

# Form implementation generated from reading ui file 'gui.ui'
#
# Created: Mon May 4 19:07:54 2009
# by: PyQt4 UI code generator 4.4.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

class Ui_finestra(object):
def setupUi(self, finestra):
finestra.setObjectName("finestra")
finestra.resize(508, 405)
self.lista = QtGui.QListView(finestra)
self.lista.setGeometry(QtCore.QRect(110, 70, 256, 192))
self.lista.setObjectName("lista")
self.tasto1 = QtGui.QPushButton(finestra)
self.tasto1.setGeometry(QtCore.QRect(100, 290, 106, 27))
self.tasto1.setObjectName("tasto1")
self.tasto2 = QtGui.QPushButton(finestra)
self.tasto2.setGeometry(QtCore.QRect(250, 290, 106, 27))
self.tasto2.setObjectName("tasto2")

self.retranslateUi(finestra)
QtCore.QObject.connect(self.tasto1, QtCore.SIGNAL("clicked()"), self.lista.setFocus)
QtCore.QObject.connect(self.tasto2, QtCore.SIGNAL("clicked()"), self.lista.setFocus)
QtCore.QMetaObject.connectSlotsByName(finestra)

def retranslateUi(self, finestra):
finestra.setWindowTitle(QtGui.QApplication.translate("finestra", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
self.tasto1.setText(QtGui.QApplication.translate("finestra", "Scrivi ciao", None, QtGui.QApplication.UnicodeUTF8))
self.tasto2.setText(QtGui.QApplication.translate("finestra", "Scrivi ok", None, QtGui.QApplication.UnicodeUTF8))

Ora ho creato un'altro file python con solo queste righe, ovviamente il file risiede nella stessa cartella di gui.py


programma.py:

import sys
from qt import *

from gui import Ui_finestra



Ora potrei provare a creare io def __init__ ..... però preferisco avere dei chiarimenti esatti , anche semplicistici, che riescano a farmi capire come strutturare il codice in maniera esatta, senza copiare quà e là... :D

Mi serve solo una piccola guida, poi mi arrangio da solo.... ( forse :D )

cdimauro
04-05-2009, 19:26
So che PyQT ha una buona documentazione e degli esempi, ma finora non ho mai avuto modo di lavorarci.

Comunque qualche utente di questo forum la usa e probabilmente ti saprà dare le giuste dritte. :)

ficofico
04-05-2009, 19:48
ok ho trovato....


from gui import Ui_finestra
from PyQt4 import QtCore, QtGui


# La funzione che fa girare il programma
app = QtGui.QApplication([]) # Crea un'applicazione Qt, ...
Dialog = QtGui.QDialog() # ... un dialogo, ...
ui = Ui_finestra() # ... e una user interface.
ui.setupUi(Dialog) # Infila il dialog nella user interface




def run():
Dialog.show() # mostra il dialog precedentemente creato
return app.exec_() # esegue l'applicazione ed esce dal
# programma ritornando lo stesso intero che ritorna app.exec_()

if __name__ == "__main__":
run()