|
|
Up |
|
|
  |
Author: _caciocavallo__caciocavallo_ Date: Apr 23, 2008 07:10
Salve a tutti, mi sono affacciato da 2 giorni al fantastico mondo PYTHON.
Sto costruendo una GUI per FFMPEG tipo FFMPEGX per Mac.
La parte delle Forms l'ho gestita con qt4-designer.
Il codice, lo gestisco da ERIC4.
Ho visto che, se da eric4, faccio "compile all forms", mi genera sempre
un nuovo Ui_xxx.py file, cancellando tutte le aggiunte che ho fatto.
La mia domanda è questa: posso tenere un file solo per la definizione
della GUI e tutto il resto del codice (con i vari slots e connessioni
del pulsanti e le def fatte da me) in vari altri file?
Ho visto che eric4, partendo dal *.ui di qt4-designer, crea anche il
main dell'applicazione. Come posso separare in 2 o più file, il mio
programmino?
Grazie a tutti
Ciao
Siro
|
| |
|
| | 10 Comments |
|
  |
Author: SimoneSimone Date: Apr 23, 2008 07:48
_caciocavallo_ ha scritto:
> La mia domanda è questa: posso tenere un file solo per la definizione
> della GUI e tutto il resto del codice (con i vari slots e connessioni
> del pulsanti e le def fatte da me) in vari altri file?
Non è che puoi, *devi*, almeno se intendi utilizzare il designer.
> Ho visto che eric4, partendo dal *.ui di qt4-designer, crea anche il
> main dell'applicazione. Come posso separare in 2 o più file, il mio
> programmino?
Sia ui_xxxx.py il nome del file che ti genera pyuic4 (che poi è quello
utilizzato da Eric4) partendo da un file .ui e sia Ui_Xxxx il nome della
finestra (per ricavare questi nomi basta aprire il file generato da
pyuic4, ma di solito è il nome che dai alla finestra preceduto da Ui_):
from ui_xxxx import Ui_Xxxx
|
| Show full article (1.91Kb) |
|
| | no comments |
|
  |
Author: _caciocavallo__caciocavallo_ Date: Apr 23, 2008 08:04
Grazie per la risposta, ma non + che c'è un esempio semplice già fatto?
Mi da degli errori:
Il file ui-> GUIFF.ui
Il file py-> Ui_GUIFF.py
Io ho fatto cosi:
from Ui_GUIFF import Ui_GUIFF
class Ui_Dialog(QDialog, Ui_GUIFF):
def __init__(self, parent = None):
super(Ui_Dialog, self).__init__(parent)
self.setupUi(self)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
|
| Show full article (0.62Kb) |
| no comments |
|
  |
Author: SimoneSimone Date: Apr 23, 2008 08:41
_caciocavallo_ ha scritto:
> from Ui_GUIFF import Ui_GUIFF
> Mi dice: "cannot import name Ui_GUIFF"
Ma nel file Ui_GUIFF.py c'è qualcosa del tipo:
class Ui_GUIFF(object):
def setupUi(self):
...
Simone
|
| |
| no comments |
|
  |
Author: _caciocavallo__caciocavallo_ Date: Apr 24, 2008 00:16
Simone ha scritto:
> _caciocavallo_ ha scritto:
>
>> from Ui_GUIFF import Ui_GUIFF
>> Mi dice: "cannot import name Ui_GUIFF"
>
> Ma nel file Ui_GUIFF.py c'è qualcosa del tipo:
>
> class Ui_GUIFF(object):
> def setupUi(self):
> ...
>
> Simone
Si c'è
class Ui_Dialog(object):
def setupUi(self, Dialog):
|
| |
| no comments |
|
  |
Author: SimoneSimone Date: Apr 24, 2008 00:26
_caciocavallo_ ha scritto:
>>> from Ui_GUIFF import Ui_GUIFF
>>> Mi dice: "cannot import name Ui_GUIFF"
>>
>> Ma nel file Ui_GUIFF.py c'è qualcosa del tipo:
>>
>> class Ui_GUIFF(object):
>> def setupUi(self):
>> ...
> Si c'è
>
> class Ui_Dialog(object):
> def setupUi(self, Dialog):
Come sospettavo... occhio che quello che devi importare è Ui_Dialog non
Ui_GUIFF.
Quindi l'import è:
from Ui_GUIFF import Ui_Dialog
Forse nell'esempio era meglio se usavo nomi completamente diversi e non
non sono stato molto chiaro. :D
|
| Show full article (0.67Kb) |
| no comments |
|
  |
Author: _caciocavallo__caciocavallo_ Date: Apr 24, 2008 01:09
>
> Come sospettavo... occhio che quello che devi importare è Ui_Dialog non
> Ui_GUIFF.
>
> Quindi l'import è:
>
> from Ui_GUIFF import Ui_Dialog
>
> Forse nell'esempio era meglio se usavo nomi completamente diversi e non
> non sono stato molto chiaro. :D
>
> Se vuoi cambiare quel "Ui_Dialog" basta cambiare l'object name dal
> QtDesigner e, ovviamente, anche l'import.
>
> Simone
Ieri, un pò per tentativi, un pò per intuito, ho fatto così.
Ora, se provo ad eseguire, mi da questo errore:
|
| Show full article (0.62Kb) |
| no comments |
|
  |
Author: _caciocavallo__caciocavallo_ Date: Apr 24, 2008 01:13
_caciocavallo_ ha scritto:
>>
>> Come sospettavo... occhio che quello che devi importare è Ui_Dialog
>> non Ui_GUIFF.
>>
>> Quindi l'import è:
>>
>> from Ui_GUIFF import Ui_Dialog
>>
>> Forse nell'esempio era meglio se usavo nomi completamente diversi e
>> non non sono stato molto chiaro. :D
>>
>> Se vuoi cambiare quel "Ui_Dialog" basta cambiare l'object name dal
>> QtDesigner e, ovviamente, anche l'import.
>>
>> Simone
>
> Ieri, un pò per tentativi, un pò per intuito, ho fatto così.
> Ora, se provo ad eseguire, mi da questo errore:
> ...
|
| Show full article (0.87Kb) |
| no comments |
|
  |
Author: SimoneSimone Date: Apr 24, 2008 01:33
_caciocavallo_ ha scritto:
> Facendo così: "class Ui_Dialog (Ui_Dialog):"
> non mi ha dato errore, però ora mi dice
> "app = QtGui.QApplication(sys.argv)
> name 'QtGui' is not defined"
>
> Credo dipenda dal namespace
No, dipende dal fatto che non hai importato PyQt4.QtGui.
E occhio a non mettere gli stessi nomi, altrimenti rischi di non capirti
più.
Comunque, credo tu abbia un po' confusione in testa.
Ti consiglio di approfondire il discorso della gestione delle classi e
dell'import di moduli esterni in python (dal tutorial), di comprare e
tenere a portata di mano il bellissimo libro "Rapid gui programming with
Python and Qt" di Mark Summerfield, nonché di vederti qualche tutorial
in rete sull'utilizzo di PyQt4 (es:
http://www.zetcode.com/tutorials/pyqt4/). Installati poi la doc delle
Qt4, che è molto ben fatta e ti chiarisce un po' le idee sul
funzionamento del tutto (anche se riferita al C++).
|
| Show full article (0.94Kb) |
| no comments |
|
  |
|
|
  |
Author: _caciocavallo__caciocavallo_ Date: Apr 24, 2008 02:00
Simone ha scritto:
> _caciocavallo_ ha scritto:
>
>> Facendo così: "class Ui_Dialog (Ui_Dialog):"
>> non mi ha dato errore, però ora mi dice
>> "app = QtGui.QApplication(sys.argv)
>> name 'QtGui' is not defined"
>>
>> Credo dipenda dal namespace
>
> No, dipende dal fatto che non hai importato PyQt4.QtGui.
>
> E occhio a non mettere gli stessi nomi, altrimenti rischi di non capirti
> più.
>
> Comunque, credo tu abbia un po' confusione in testa.
>
Dire di si :-}
|
| Show full article (1.21Kb) |
| no comments |
|
|
|
|
|
|