Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/05/2007, à 09:54

biggione

interface python

Bonjour à toutes et à tous,

Je voudrais savoir comment faire pour développer une application en python et une interface.

Quels sont les paquets a installer. J'ai deja python. Dois je utilisais tkinter en plus?

Il n'y a pas moyen de faire cela comme visual basic on crée une fenetre avec ces elements et on code les evenements en python.

Enfin voila jdébute sur ce langage et je voudrais donc 2-3 renseignements et vos avis.

Merci big_smile


Le site pour trouver des logiciels gratuits pour les entreprises:    www.kamazotux.fr

Hors ligne

#2 Le 22/05/2007, à 15:25

ReZ

Re : interface python

Faire de l'interface en python, il y a plusieurs moyens
-tkinter, je crois que c'est inclus de base, c'est le plus moche mais le plus facile à utiliser avec le python
-pyGTK, on peut utiliser glade pour créer ses interfaces mais c'est après où le bat blesse c'est que GTK a la base n'a pas été pensé pour python (et l'objet en général) et c'est assez casse couilles de récupérer les évènements et les propriétés
-pyQT, surement le meilleur mais l'inconvénient c'est que c'est pas souvent mis à jour si mes souvenirs sont bons
-Wxwidgets, le meilleur compromis, mon préféré personnellement.

Si tu viens du monde merveilleux et magique des codeurs visual basic (j'en ai fait partie), pyGTK avec Glade ne te bouleveras pas trop.

#3 Le 22/05/2007, à 20:56

aleph

Re : interface python

> Wxwidgets , le meilleur compromis, mon préféré personnellement.

Petites précisions.

wxWidgets est "toolkit" graphique pour le langage C++. Il existe des implémentations de ce "GUI" pour différents langages tels que Python, Lua ou Perl pour différentes platformes Windows, "Linux", OS X ou "BSD".

La variante pour le langage Python se nomme wxPython.

wxWidgets (anciennement wxWindows) ou wxPython s'écrivent avec un w et un x minuscules, le w signifiant win32/Windows et x, le système graphique X.

Aujourd'hui s'ajoute en plus une version "native" de wxPython pour OS X. Elle sera incluse par défaut dans la version Leopard de OS X (la version choisie sera probablement la version wxPython 2.8.4.0 bien que le no de version ne soit pas définitvement arrêté).

wxPython : http://www.wxpython.org/
wxWidgets : http://www.wxwidgets.org/

#4 Le 23/05/2007, à 09:01

biggione

Re : interface python

Donc là sur mon Feisty j'ai python d'installer. Il me suffit donc juste d'ajouter le paquet synaptic:

python-wxtools

C'est cà?


Le site pour trouver des logiciels gratuits pour les entreprises:    www.kamazotux.fr

Hors ligne

#5 Le 31/05/2007, à 07:51

Bykounour

Re : interface python

Bonjour,

biggione tu pourras me tenir informé sur ce poste, je suis dans le même cas que toi...

Merci,

Bon courage

Hors ligne

#6 Le 31/05/2007, à 08:52

biggione

Re : interface python

ben pour l'instant ca a pas l'air d'avancé sad mais je perds pas espoir big_smile


Le site pour trouver des logiciels gratuits pour les entreprises:    www.kamazotux.fr

Hors ligne

#7 Le 31/05/2007, à 09:33

NicoA380

Re : interface python

Je suis adepte du python et glade, c'est vraiment pratique pour les IHM. Désormais, il y a glade3 qui permet des choses plus complète.
Comme IDE, j'utilise Eclipse + pyDev pour le code (j'ai de la ram tongue).

et c'est assez casse couilles de récupérer les évènements et les propriétés

Il semble que glade3 fait la génération de code python, mais je m'en étais fait un pour les version antérieur :

glade2pyGenerator.py :

#! env python
# coding: utf-8

import sys
import libxml2

def generate(gladefile,pyfile=None):
  window = []
  handlers = set()
  res = """#! env python
# coding: utf-8

import gtk
from gladeAutoconnect import gladeAutoconnect

"""
  glade = libxml2.parseFile(gladefile)
  for node in glade:
    if(node.get_name() == "widget" and node.prop("class") == "GtkWindow"):
      id = node.prop("id")
      window.append(id)
      res += """class %s(gladeAutoconnect):
  def __init__(self):
    gladeAutoconnect.__init__(self, "%s", "%s")

"""%(id,gladefile,id)
    if(node.get_name() == "signal"):
      handler = node.prop("handler")
      if handler and not(handler in handlers):
        handlers.add(handler)
        res += """  def %s(self, source = None, event = None):
    print '%s'\n"""%(handler,handler)
        if node.prop("name") and node.prop("name") == "delete_event":
          res += "    gtk.main_quit()\n"
        res +="\n"
  res += "if __name__ ==  '__main__':\n"
  for i,win in enumerate(window):
    res += "  win%i = %s()\n" % (i,win)
  res += "  gtk.main()\n"
  
  if not pyfile: return res
  
  f = open(pyfile,"w",755)
  f.write(res)
  f.close()

if __name__ == "__main__":
  nbarg = len(sys.argv)
  if nbarg == 3:
    generate(sys.argv[1],sys.argv[2])
  elif nbarg == 2:
    print generate(sys.argv[1])
  else:
    print "exit !!"
    sys.exit()

gladeAutoconnect.py :

#! env python
# coding: utf-8

import pygtk
pygtk.require('2.0')
import gtk.glade
import gtk

class gladeAutoconnect:
    def __init__(self,glade,window):
      self.widget = gtk.glade.XML(glade, window)
      dico = {} ## dico vide pour commencer
      self.dico_recurcif(self.__class__, dico)
      self.widget.signal_autoconnect(dico)

    def dico_recurcif (self, classe, dico):
        bases = classe.__bases__
        for iteration in bases:
            self.dico_recurcif(iteration, dico) ## Appel recursif
        for iteration in dir(classe):
            dico[iteration]=getattr(self,iteration)

Il faut utiliser le premier pour générer du code : python glade2pyGenerator.py monIHM.glade monCode.py
Il faut mettre le deuxième script dans le même répertoire que celui du code.

Hors ligne

#8 Le 31/05/2007, à 09:42

biggione

Re : interface python

donc en gros ce que tu explique c'est que moi je vais développer mon interface sous glade que je nomme monIHM.glade puis le code python (moncode.py)

Et t script font les liens automatiquement?

Mais dois je respecter un standard dans les noms des composants de l'interface...

En fait ma question c'est plus:
imaginons que je veux créer un ptite fenetre contenant le mot "Hello" avec un bouton quiter.

je crée d'abord l'interface sous glade.
et après je réutilise les nom employé sous glade pour coder les évènements.
C ca le principe?

Et tes scripts permettent de lier tout ca?

Désolé je débute en python big_smile


Le site pour trouver des logiciels gratuits pour les entreprises:    www.kamazotux.fr

Hors ligne

#9 Le 31/05/2007, à 09:51

Bykounour

Re : interface python

Bonjour,
Dans mes recherches je suis tombé sur un rapport d'étudiant très bien (enfin j'ai pas tout lu encore):
http://www.borer.name/files/eivd/pyqt/rapport_PyQt.pdf

que j'ai trouvé sur le site: http://www.bawet.org/article.php3?id_article=138

Bonne lecture et bon courage

Hors ligne

#10 Le 31/05/2007, à 10:11

reeth

Re : interface python

Merci pour ce rapport, il a l'air très intéressant.

Hors ligne

#11 Le 31/05/2007, à 10:18

biggione

Re : interface python

c clair! merci pour ce lien qui répond déjà à pas mal de mes question big_smile


Le site pour trouver des logiciels gratuits pour les entreprises:    www.kamazotux.fr

Hors ligne

#12 Le 31/05/2007, à 10:22

Bykounour

Re : interface python

De rien, c'est les rédacteurs de la doc qu'il faut remercier en + comme un gros béta j'avais oublié le lien sur la source: La page source : http://www.borer.name/pti2/2006/07/16/pyqt_rapport_online des fois que vous souhaitiez l'amméliorer/compléter wink

Hors ligne

#13 Le 31/05/2007, à 10:43

biggione

Re : interface python

je pense avoir compris pas mal de chose apres cette lecture.

Je voudrais cependant un avis.

QUe pensez vous de Qt4? Qt4 Designer...?


Le site pour trouver des logiciels gratuits pour les entreprises:    www.kamazotux.fr

Hors ligne

#14 Le 31/05/2007, à 12:34

krocket

Re : interface python

biggione a écrit :

je pense avoir compris pas mal de chose apres cette lecture.

Je voudrais cependant un avis.

QUe pensez vous de Qt4? Qt4 Designer...?

QT est orienté pour kde et gtk pour gnome.

Dépend pour quel interface graphique tu .......


De plusieurs programmes ou systèmes d'exploitation en occurrence, le plus performant n'est jamais retenu comme standard !

Bobby sort de là !

Hors ligne

#15 Le 31/05/2007, à 12:38

biggione

Re : interface python

ben moi je suis sous gnome.

Cela voudrais dire ke je peux pas l'utiliser sous Ubuntu Feisty?

Pourtant j'ai vu que python-qt4 à le logo ubuntu sur le gestionnaire Synaptics


Le site pour trouver des logiciels gratuits pour les entreprises:    www.kamazotux.fr

Hors ligne

#16 Le 31/05/2007, à 13:28

krocket

Re : interface python

Si tu peux mais les utilisateurs gnomes devront installer les librairies qt pour faire fonctionner ton application.

Dernière modification par krocket (Le 31/05/2007, à 13:30)


De plusieurs programmes ou systèmes d'exploitation en occurrence, le plus performant n'est jamais retenu comme standard !

Bobby sort de là !

Hors ligne

#17 Le 31/05/2007, à 13:40

biggione

Re : interface python

ok bon ben ca marche alors. Merci


Le site pour trouver des logiciels gratuits pour les entreprises:    www.kamazotux.fr

Hors ligne

#18 Le 31/05/2007, à 14:39

aleph

Re : interface python

> biggione

pyGTK ou wxPython reposent sur GTK et sont par conséquent "plus natifs" GNOME. (Un peu plus subtil dans le cas wxPython).
pyQt repose sur Qt, donc "plus natif" pour KDE.

Ce n'est pas le but de mon message. Si tu veux "faire de Python" :
1) Apprends Python
2) Apprends Python
3) Apprends Python
4) Apprends Python
5) Apprends Python

6) Quand tu penses maîtriser Python, commence à programmer une interface graphique.

Arrivé à ce point, tu te rendras compte que le code proposé (glade) plus haut est assez stupide. En effet, la majorité du code ne sert pas à faire fonctionner Python+Gtk, mais à intégrer et gérer glade !

#19 Le 31/05/2007, à 16:41

NicoA380

Re : interface python

Pour mes scripts, le principe c'est de faire son interface sous Glade, de récupérer le ".glade", ensuite tu utilises mon script qui va générer le code à partir du ".glade".
Donc "python glade2pyGenerator.py monIHM.glade monCode.py" créé le fichier monCode.py, pré-remplit pour charger le Glade, et connecter automatiquement les signaux défini dans Glade (les signaux, ce sont les évènements déclenché par les widgets graphique).
Il faut ce dire qu'un signal = un appel de fonction Python.

Hors ligne

#20 Le 31/05/2007, à 17:24

Albion

Re : interface python

Salut,

Je suis débutant et j'ai prévu de faire quelques lectures, peut-être que ces liens pourraient t'intéresser :

Traduction en français du tutoriel pygtk :
Ça m'a l'air pas mal du tout. j'ai juste survolé et regardé les exemples, je pense qu'il y a moyen d'apprendre assez facilement avec cela.

Ressources Python : on peut télécharger librement le livre Apprendre à programmer avec Python  paru aux  éditions O'Reilly, ainsi que le code source des exemples

#21 Le 13/06/2007, à 14:44

biggione

Re : interface python

Voilà en gros j'ai choisi finalement eclipse + plugin pyDev

Et Glade pour les interfaces

Au fait merci pour les tutos.


Le site pour trouver des logiciels gratuits pour les entreprises:    www.kamazotux.fr

Hors ligne

#22 Le 13/06/2007, à 15:45

NicoA380

Re : interface python

Tu nous feras voir le résultat wink

Hors ligne

#23 Le 13/06/2007, à 16:21

biggione

Re : interface python

ben la jdebute donc pour l'instant je ne fait pas des trucs exceptionnels mais promis si un jour je fais un truc qui sert, je vous le fait savoir! big_smile

Merci en tout cas pour toutes vos infos.


Le site pour trouver des logiciels gratuits pour les entreprises:    www.kamazotux.fr

Hors ligne