Comment lancer son application !!!!!!!!!!

cs_steede Messages postés 13 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 26 mars 2005 - 27 janv. 2005 à 22:00
taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 - 30 janv. 2005 à 21:49
Voila, j'ai écrit (pompé) une malheureuse app (extraite d'un exemple "simple" de wx) et j'aimerais la faire fonctionner !!!!

ci dessous la ligne de la classe :

class fenOne(wx.Frame):
"""
fenêtre du logiciel
"""
def __init__(self, parent, id, log):

wx.Frame.__init__(self, parent, id, 'eh Be !!!')
self.log = log
self.CreateStatusBar()
self.SetStatusText("informations")

# Préparation de la ligne des menus
menuBar = wx.MenuBar()
.....

J'ai beau écrire ww = fen0ne(), fenOne(" ") .... Python m'envoie toujours balader : trop d'arguments, pas assez d'arguments....blabla blabla

Bref en fait je n'arrive pas à me faire à ce language, comment comprendre un tel charabia :

if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:]) beurk, beurk, beurk .....

C'est impressionnant !!!!

A+ (si j'abandonne pas ce language chamanique !)

5 réponses

cs_rodrigos Messages postés 84 Date d'inscription jeudi 24 janvier 2002 Statut Membre Dernière intervention 4 avril 2006 2
28 janv. 2005 à 08:33
salut,

Pour wxwindows je vais pas pouvoir trop t'aider, mais à mon avis ,
quand tu initialise ta fenêtre il te faut 3 arguments : parent, id et
log. Sinon pour se familiarisé un peu plus avec wxwindows, il existe
visualwx qui te permet de créer des fenêtres.





if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])








quand tu fait appel à la variable __name__, elle t'indique qui appelle
le script. Si sa valeur est '__main__', cela veut dire ce script est
exécuté directement( sans passer par un autre script).



Les import permettent de charger des modules (os, sys et run). ça
équivaut en quelque sorte aux include du C. (voir la doc pour plus
d'infos sur chaque modules)

run.main() signifie que ça appelle la fonction main() du module run. Ce
qui ets entre () conrespond aux arguments de la méthode main.

os.path.basename(sys.argv[0])] te permet d'obtenir le répertoire dans lequel est contenu le script

sys.argv est un tableau contenu tous les arguments passés en ligne de commande.





Si tu désire plus d'infos n'hésite pas.
0
cs_steede Messages postés 13 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 26 mars 2005
28 janv. 2005 à 13:20
Merci de ton aide.

En fait quand je crée une instance de la classe fenOne() j'écris :
ww = fen0ne(wx.Frame, -1, "titre").
Dans ce cas, il y a le bon nombre d'argument mais le Pyt demand un pointeur !!!!

c'est vraiment dommage, car les instructions de création d'un simple menu sont relativement
simples.

Y aurait il un spécialiste de WX ??
0
cs_rodrigos Messages postés 84 Date d'inscription jeudi 24 janvier 2002 Statut Membre Dernière intervention 4 avril 2006 2
28 janv. 2005 à 14:22
tu peux peut-être essayer

ww = fenOne(None, -1, "titre")
0
cs_steede Messages postés 13 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 26 mars 2005
28 janv. 2005 à 22:47
Eh non, ça marche pas !!!


J'ai essayé des trucs pendant 2 plombes et rien, nada, que dalle !!!!


Merci quand même pour l'aide.


A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 3
30 janv. 2005 à 21:49
Slt..

quelques explications

Ton constructeur ( __init__(...) prend quatre arguments.

-> self est une réfénce sur soi meme

quand tu fais un appel du genre truc.methode(), il est implicite

tu doi le fournir seulement quand tu fait par exemple wx.Frmae.__init__
car tu appelles la methode de la classe et pas de ton objet. Quand tu
crees un objet il est egallement implicite.



-> ensuite tu as mis parent. parent est l'objet qui contient ta fenetre ici c 'est none.



-> id est un identidifiant dans ton environnement
wx. tu peux recuperer tes objets wx apres grace a cet ID mais il reste
facultatif. ut peux donc mettre -1 si tu n'en veux pas sinon tu peux te
servir de wx.NewID() pour en avoir un qui n'est pas utiliser.



-> et ensuite log. une variable que tu utilise toi.



Il faut donc passer quatre -1 arguments ( a cause du self ) lors de la creation de ta fenetre.



ww = fen( None, -1, log )

PS : je ne sais pas a koi saire ton log.



Mais avant de pouvoir creer une fenetre wx , il faut avoir cree l'application wx de type wx.App :





class MyApp( wx.App ):

def OnInit( Self ):

try:


win = fenone( None, -1, log )


win.CenterOnParent( wx.BOTH ) # centre la fentetre


win.Show( True ) #affiche la fentre


Self.SetTopWindow( win )


return True



except Exception, e:


print e


time.sleep( 5 )


return False



app = MyApp(True) # creer une application en redirigeant la sortie
standart passe False si tu veux garder la sortie standart dans la
console.

app.MainLoop() # Lance l'appli wx.



Voila j'espere que j'a repondu a tes questions....

Sinon n'heste pas

Eric
0
Rejoignez-nous