Da newbie
  Home FAQ Contact Sign in
it.comp.lang.python only
 
Advanced search
POPULAR GROUPS

more...

it.comp.lang.python Profile…
 Up
Da newbie         


Author: _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
Re: Da newbie         


Author: Simone
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
Re: Da newbie         


Author: _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
Re: Da newbie         


Author: Simone
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
Re: Da newbie         


Author: _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
Re: Da newbie         


Author: Simone
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
Re: Da newbie         


Author: _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
Re: Da newbie         


Author: _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
Re: Da newbie         


Author: Simone
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
Re: Da newbie         


Author: _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
 
1 2