Python et Tkinter/Pmw

Python et Tkinter/Pmw - Python - Programmation

Marsh Posté le 08-06-2015 à 16:43:36    

Bonjour à tous,
Version Python 2.0.0, sous W7 64bits
 
Je cherche à apprendre Python et pour ça j'utilise "Apprendre à programmer avec Python" de G Swinnen.
Je suis arrivé à Pmw, ou il demande de lancer all.py, et là ça coince et je ne m'en sors pas.
Partie concernée du script:
 
import Pmw
DemoVersion.setPmwVersion()
 
class Demo(Pmw.MegaWidget):
 
    def __init__(self, parent=None, **kw):
 
    # Define the megawidget options.
    optiondefs = ()                             <<<<<<<<<< la  
    self.defineoptions(kw, optiondefs)
 
    # Initialise the base class (after defining the options).
        Pmw.MegaWidget.__init__(self, parent)
 
J'ai le message d'erreur suivant :     :??:  
 
optiondefs = (None)
             ^
IndentationError: expected an indented block.
 
C'est embêtant car je n'avance plus à cause de ça.
 
Merci pour votre réponse.
 
CDT, Molene2
 
 
 

Reply

Marsh Posté le 08-06-2015 à 16:43:36   

Reply

Marsh Posté le 08-06-2015 à 23:34:51    

Au pif, je ne parle pas le language serpent...
 
En Python les indentations sont très importantes. Et le message d'erreur me fait penser qu'il faut en rajouter une couche, genre
 

Code :
  1. import Pmw
  2. DemoVersion.setPmwVersion()
  3. class Demo(Pmw.MegaWidget):
  4.     def __init__(self, parent=None, **kw):
  5.         # Define the megawidget options.
  6.         optiondefs = ()                             <<<<<<<<<< la 
  7.         self.defineoptions(kw, optiondefs)
  8.         #Initialise the base class (after defining the options).
  9.         Pmw.MegaWidget.__init__(self, parent)


?? Ou alors le nombre d'espaces n'est pas bon (Wiki parle de 8 espaces pour un tab) ou faut mettre des tab à la place?
 
La prochaine fois pense à mettre ton code entre balises [ code][ /code] (sans les espaces).

Reply

Marsh Posté le 09-06-2015 à 09:03:20    

Bonjour,
Merci pour ta réponse rapide ^^  
En effet, je n'avais pas remarqué ces erreurs d'indentation dans le code, à ma décharge je dirais que ce code étant fourni avec Pmw, je ne pige pas pourquoi c'est bug ... Enfin... j'ai modifié tout ça et c'est nettement mieux.
 
Donc merci encore, Molene2

Reply

Marsh Posté le 09-06-2015 à 17:20:10    

Salut,
(Petite correction pour mon 1er post, Python 3.4 et pas 2.0.0)
 
Bon, décidément j'ai un problème avec Pmw, cette fois j'essaye un script toujours par G Swinnen et je coince sur deux lignes.
 
fen = Pmw.initialise() & combo = Pmw.ComboBox(fen, labelpos = NW,.....)
 
Erreur : Undefined variable from import : initialise
                                                    : ComboBox
 

Code :
  1. rom tkinter import *
  2. import Pmw
  3. def changeCoul(col):
  4.     fen.configure(background = col)
  5.    
  6. def changeLabel():
  7.     lab.configure(text = combo.get())
  8.    
  9. couleurs = ('navy', 'royal blue', 'steelblue1', 'cadet blue',
  10.             'lawn green', 'forest green', 'dark red',
  11.             'grey80','grey60', 'grey40', 'grey20')
  12. fen = Pmw.initialise()
  13. bou = Button(fen, text ="Test", command =changeLabel)
  14. bou.grid(row =1, column =0, padx =8, pady =6)
  15. lab = Label(fen, text ='néant', bg ='ivory')
  16. lab.grid(row =1, column =1, padx =8)
  17. Je travaille avec Eclipse & Pydev
  18. combo = Pmw.ComboBox(fen, labelpos = NW,
  19.                      label_text = 'Choisissez la couleur :',
  20.                      scrolledlist_items = couleurs,
  21.                      listheight = 150,
  22.                      selectioncommand = changeCoul)
  23. combo.grid(row =2, columnspan =2, padx =10, pady =10)
  24. fen.mainloop()


 
Je n'y comprends plus rien, ai-je mal installé Pmw?
 
Enfin, merci si une bonne âme passais par là avec une suggestion

Reply

Marsh Posté le 09-06-2015 à 18:09:25    

Oups
Je viens de me rendre compte que j'ai merdouillé,  
01 rom  >>> from (erreur copier coller)
 
20 Je travaille avec Eclipse & Pydev > ne fait évidement partie du script
 
Désolé, je ferai mieux le prochaine fois. :whistle:

Reply

Marsh Posté le 10-06-2015 à 11:44:48    

Bonjour,
 
Je reviens sur ce post, en fait si je lance mon script à partir de Pmw_2_0_0/demo et si je rajoute ces 2 lignes ;

Code :
  1. import sys
  2. sys.path[:0] = ['../../..']


Ca fonctionne, mais si je le lance à partir de Eclipse,Pydev ou d'un autre répertoire j'ai ce message:
 
Traceback (most recent call last):
  File "C:\Python34\Projet\src\BoutonDeroulant.py", line 8, in <module>
    import Pmw
ImportError: No module named 'Pmw'
 
J'en suis donc sur une probable mauvaise installation de Pmw, j'ai pris la version 2.0.0 que j'ai dezippé dans c:\Python34\Pmw_2_0_0
 
D'autre part, si je renomme le repertoire Pmw_2_0_0 en Pmw, j'ai le message suivant:
 
Traceback (most recent call last):
  File "C:\Python34\Projet\src\BoutonDeroulant.py", line 20, in <module>
    fen = Pmw.initialise()
AttributeError: 'module' object has no attribute 'initialise'
 
Là il trouve Pmw, mais pas attribut initialise.
 
Bref, je tourne en rond et je suis sec.
Merci d'aider un débutant dans la peine...

Reply

Marsh Posté le 10-06-2015 à 18:04:57    

Heu désolé, comment je disais j'y connais rien et je ne vais pas me risquer à raconter n'importe quoi... :o

Reply

Marsh Posté le 14-06-2015 à 22:59:47    

bonsoir,
J'ai trouvé la solution à mon problème.
 
Merci pour votre aide

Reply

Marsh Posté le 15-08-2015 à 15:12:54    

molene2 a écrit :

bonsoir,
J'ai trouvé la solution à mon problème.
 
Merci pour votre aide


 
Je rencontre le même problème.
Quelle était la solution ?
Merci pour votre aide

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed