# Pblm avec TKinter sous Python



## Filou53 (19 Août 2006)

Bonjour.

Je débute sur Python et je fais mes premiers pas avec 'Apprendre à programmer avec Pyton' de G Swinnen (la version pdf).

Je travaille avec Python 2,4,3 et Idle 1,1,3

Quand j'essaie de lancer le script suivant (ch 8,2 page 81):

Code :
from Tkinter import * 
fen1 = Tk() 
tex1 = Label(fen1, text='Bonjour tout le monde !', fg='red') 
tex1.pack() 
bou1 = Button(fen1, text='Quitter', command = fen1.destroy) 
bou1.pack() 
fen1.mainloop()​la fenêtre s'affiche correctement mais j'ai beau cliquer sur le bouton ou les 3 boutons de fenêtre (Mac!), rien ne se passe (sauf avec le bouton orange de réduction de fenêtre qui lui, bizarrement, fonctionne !) 

Une bonne âme pourrait-elle me dépanner ?
J'ai un peu fouiné dans les FAQ mais comme je débute, je ne vois pas bien ou chercher  
D'avance merci

Filou


----------



## tatouille (19 Août 2006)

Filou53 a dit:
			
		

> Bonjour.
> 
> Je débute sur Python et je fais mes premiers pas avec 'Apprendre à programmer avec Pyton' de G Swinnen (la version pdf).
> 
> ...



use wx


----------



## Filou53 (19 Août 2006)

Merci pour ta réponse,
mais pour un débutant comme moi, elles est un peu sybilline  

Je suppose qu'au lieu d'utiliser la bibliothèque Tkinter, tu me conseilles d'utiliser wx (ou wxPython ??? c'est la même chose ?)

Tkinter n'est pas 'complètement' utilisable sur Mac ?
(comme c'est ce que Swinnen utilise dans son manuel, j'aimerais pouvoir continuer avec)

Par ailleurs où se cache wx/wxPython ?
J'ai bien trouvé un répertoire Developer/Documentation/Python/wxPython mais cela ne me semble pas très clair... 

Dans mon exemple, si je remplace naïvement 'from Tkinter import * ' par 'from wx (ou wxPython) import *', je me fais directement jeter avec le msg 'no module named...' donc je suppose que wx(...) n'est pas encore installé sur ma machine. Exact ?
Que faire alors ?

Filou


----------



## tatouille (20 Août 2006)

Filou53 a dit:
			
		

> Merci pour ta réponse,
> mais pour un débutant comme moi, elles est un peu sybilline
> 
> Je suppose qu'au lieu d'utiliser la bibliothèque Tkinter, tu me conseilles d'utiliser wx (ou wxPython ??? c'est la même chose ?)
> ...



click sur ma home dans la signature


----------



## Filou53 (20 Août 2006)

Merci (2). Il y a de quoi lire ! 

Dès que je serai un peu mieux réveillé, j'irai voir tout cela.

Mais je me permets d'insister sur une partie de ma question:
Tkinter n'est pas 'complètement' utilisable sur Mac ?
(comme c'est ce que Swinnen utilise dans son manuel, j'aimerais pouvoir continuer avec)​Comme je m'efforce de suivre les leçonc du manuel, j'aimerais ne pas trop m'écarte des exemples...

Par ailleurs, si les deux sont 'compatibles' Mac, pourquoi conseilles-tu plutôt wxPython ? Quel est l'intérêt ?

Filou


----------



## Filou53 (20 Août 2006)

encore moi...



> Par ailleurs, si les deux sont 'compatibles' Mac, pourquoi conseilles-tu plutôt wxPython ? Quel est l'intérêt ?



ok, ok, j'ai compris...
rien qu'en regardant la demo wxPython, il n'y a pas photo !
Le look Mac semble bien respecté alors qu'avec Tkinter, ce n'est pas tout à fait cela. Et je présume qu'aux niveaux fonctionnalités/performances... wxPython est aussi en tête (?).

Mais, sorry pour mon acharnement, j'aimerais d'abord faire le tour des leçons avec Tkinter - car je suppose que les syntaxes sont différentes d'une bibliothèque à l'autre ???

Filou


----------



## tatouille (20 Août 2006)

tinker est obsolete voir le site de python
use wx (python)

wx_windows
wx_gtk_linux
wx_carbon_macosx (current)
wx_cocoa_macosx (beta-cvs)

wx_gtk_osx + Gtk+ for Mac OS X  (beta)

/System/Library/Frameworks/Python.framework


----------



## Filou53 (20 Août 2006)

tatouille a dit:
			
		

> tinker est obsolete voir le site de python
> use wx (python)


ok, je suis convaincu   
mais j'aimerais savoir pourquoi mes qq lignes de code ne fonctionnent pas...   

Filou


----------



## tatouille (20 Août 2006)

on s'en fou ca doit pas etre support&#233; &#224; cause du pack juste en passant

t&#233;l&#233;charge Archimade et ouvre le bundle App ( afficher le contenu du paquet )

http://plumber.gnu-darwin.org/pub/projects/Archimade.zip

Panther

http://plumber.gnu-darwin.org/pub/projects/PyAppStubApplication-MacOSX%20Panther.zip

ou Tiger

http://plumber.gnu-darwin.org/pub/projects/PyAppStubApplication-MacOSX%20Tiger.zip

tu as une application de demo wx 
qui utilises mon framework PyAppStubApplication

mais bon tu auras un aper&#231;u de my first wx app

Archimade c'est l'exemple pouss&#233; un peu plus loin 
pour montrer qu'avec un framework UI cross platforme
on peut faire du vraie natif si on adapte pour chaque UI

et surtout c'est mon appli de dev/debug pour mon PyAppStubApplication


----------



## tatouille (20 Août 2006)

de rien tu remarqueras que l'adaptation UI passe aussi par un travail 
des éléments graphiques correspondant à la platforme 

( pas d'icon/image style gnome sous osx  
et pas d'icon/image style osx sous gnome)

on peut faire clean sous chaque platforme de plus l'iconographie d'une application
et l'architecture GUI sont indispensables quant on develop correctement 

pas comme se milliard de million d'appli degueulasses 
graphiquement et avec un GUI pensé
avec les pieds


----------



## Filou53 (20 Août 2006)

tatouille a dit:
			
		

> télécharge Archimade et ouvre le bundle App ( afficher le contenu du paquet )
> ...
> ou Tiger
> http://plumber.gnu-darwin.org/pub/projects/PyAppStubApplication-MacOSX%20Tiger.zip
> ...


Oh là, doucement, tu vas un peu vite pour moi :rose:

En plus, je dois être maudit  
Quand je lance Archimade ou Application de démo,
cela explose dans les 2 cas avec le msg fatidique: L'application a quitté inopinément...

Devais-je installer qq chose de particulier autre que wxPython ?
(sorry si mes qst sont triviales...)

Filou


----------



## p4bl0 (20 Août 2006)

tatouille a dit:
			
		

> on s'en fou ca doit pas etre support&#233; &#224; cause du pack juste en passant
> 
> t&#233;l&#233;charge Archimade et ouvre le bundle App ( afficher le contenu du paquet )
> 
> ...


C'est impressionnant ton truc !!

On dirait qu' Archimade est fait en Cocoa, en plus le code est super bien foutu, ton NSAppKit c'est g&#233;niale, &#231;a fait genre Cocoa en Python (tout est "renomm&#233;" pour faire les nom de classe et tout comme Cocoa, &#231;a fait OS X &#224; mort !)

Super int&#233;ressant


----------



## tatouille (20 Août 2006)

Filou53 a dit:
			
		

> Oh l&#224;, doucement, tu vas un peu vite pour moi :rose:
> 
> En plus, je dois &#234;tre maudit
> Quand je lance Archimade ou Application de d&#233;mo,
> ...


panther ? wx est install&#233; si tu as xcode


----------



## Filou53 (20 Août 2006)

tatouille a dit:
			
		

> panther ? wx est installé si tu as xcode



Je suis sous Tiger (en 10,4,7) avec xcode installé.


----------



## tatouille (20 Août 2006)

ouvre ton terminal 

et ouvre le bundle Archimade

drag et drop Archimade.app/Contents/MacOS/Archimade

dans la fenetre du terminal et fait enter 

puis copie moi la sortie obtenue svp

que je vois le probleme
le fat binary est il junk ?

as tu mis l'application dans un dossier avec un accent ( hors alias-name localiz&#233; ) ? wx ne supporte pas encore 
copie moi la sortie obtenue pour voir ou cela s'arrete (probleme binaire ou coter python )

le debug quand tout se passe bien 


```
-- PyApplicationMain.c Starting --
-- PyApplicationMain.c Setting up Python --
-- PyApplicationMain.c Setting up Python __builtin__ module --
PyAppStub_Root='/Volumes/Container/Projects/Darwin/python/pyArchimade/Archimade.app'
PyAppStub_Set('_ASBundleRoot',PyAppStub_Root)
PyAppStub_Set('_ASBundleResources',os.path.join(PyAppStub_Root,'Contents/Resources'))
PyAppStub_Set('_ASBundlePython',os.path.join(PyAppStub_Root,'Contents/Resources/Python'))
PyAppStub_Set('_ASBundleName','Archimade')
PyAppStub_Set('_ASBundleIdentifier','org.Archimade')
PyAppStub_Set('_ASBundleVersion','118')
PyAppStub_Set('_ASBundleShortVersionString','1.0')
PyAppStub_Set('_ASBundleGetInfoString','Copyright &#169; 2006 Plumber OpenSpecies, All rights reserved.')
PyAppStub_Set('_ASHumanReadableCopyright','Copyright &#169; 2006 Plumber OpenSpecies, All rights reserved.')
PyAppStub_Set('_ASBundleHelpBookName','ArchimadeHelp')
sys.path.append(os.path.join('/Volumes/Container/Projects/Darwin/python/pyArchimade/Archimade.app/Contents/MacOS/../Frameworks/PyApplicationStub.framework','Resources/PrivatePython'))
PyAppStub_DEBUG = True

-- PyApplicationMain.c Setting up Python sys.path module --
sys.path.append(os.path.join(PyAppStub_Root,'Contents/Resources/Python'))
sys.path.append(os.path.join(PyAppStub_Root,'Contents/Resources/Python/Archimade'))
sys.path.append(os.path.join(PyAppStub_Root,'Contents/Resources/Python/NSAppKit'))
sys.path.append(os.path.join(PyAppStub_Root,'Contents/Resources/Python/CFgedeon'))

-- PyApplicationMain.c Python Running --
-- PyApplicationMain.c Executing Python Main File --
/Volumes/Container/Projects/Darwin/python/pyArchimade/Archimade.app/Contents/Resources/Python/Archimade.py
```
j'ai besoin de la sortie pour voir si ca crame avant, au milieu 
ou apr&#232;s l'exectution du main python 

si ca crame avant donne moi aussi le fichier 
dans ta maison

{Library localis&#233; (en fran&#231;ais biblioth&#232;que}/Logs/CrashReporter/Archimade.crash.log

 ca me serait tres utile 
merci truk2oof 

_Vous devriez donner des points de r&#233;putation &#224; d'autres avant d'en offrir de nouveau &#224; truk2oof._

et chez toi ca fonctionne ?


----------



## Filou53 (20 Août 2006)

tatouille a dit:
			
		

> as tu mis l'application dans un dossier avec un accent ( hors alias-name localizé ) ? wx ne supporte pas encore


Bien vu, c'était simplement cela !
L'appli était dans un sous répertoire d'un répertoire avec caractère accentué.
J'ai déplacé et cela fonctionne.
Très joli... 

Filou


----------



## p4bl0 (20 Août 2006)

tatouille a dit:
			
		

> ouvre ton terminal
> 
> et ouvre le bundle Archimade
> 
> ...



Chez moi &#231;a fonctionne niquel (d'ailleurs je garde l'appli, c'est plus sympa que de faire ses tgz par le terminal 

voil&#224; ce que &#231;a donne si je fait la manip :

```
-- PyApplicationMain.c Starting --
-- PyApplicationMain.c Setting up Python --
-- PyApplicationMain.c Setting up Python __builtin__ module --
PyAppStub_Root='/Applications/Utilities/NonApple/Archimade.app'
PyAppStub_Set('_ASBundleRoot',PyAppStub_Root)
PyAppStub_Set('_ASBundleResources',os.path.join(PyAppStub_Root,'Contents/Resources'))
PyAppStub_Set('_ASBundlePython',os.path.join(PyAppStub_Root,'Contents/Resources/Python'))
PyAppStub_Set('_ASBundleName','Archimade')
PyAppStub_Set('_ASBundleIdentifier','org.Archimade')
PyAppStub_Set('_ASBundleVersion','118')
PyAppStub_Set('_ASBundleShortVersionString','1.0')
PyAppStub_Set('_ASBundleGetInfoString','Copyright © 2006 Plumber OpenSpecies, All rights reserved.')
PyAppStub_Set('_ASHumanReadableCopyright','Copyright © 2006 Plumber OpenSpecies, All rights reserved.')
PyAppStub_Set('_ASBundleHelpBookName','ArchimadeHelp')
sys.path.append(os.path.join('/Applications/Utilities/NonApple/Archimade.app/Contents/MacOS/../Frameworks/PyApplicationStub.framework','Resources/PrivatePython'))
PyAppStub_DEBUG = True

-- PyApplicationMain.c Setting up Python sys.path module --
sys.path.append(os.path.join(PyAppStub_Root,'Contents/Resources/Python'))
sys.path.append(os.path.join(PyAppStub_Root,'Contents/Resources/Python/Archimade'))
sys.path.append(os.path.join(PyAppStub_Root,'Contents/Resources/Python/NSAppKit'))
sys.path.append(os.path.join(PyAppStub_Root,'Contents/Resources/Python/CFgedeon'))

-- PyApplicationMain.c Python Running --
-- PyApplicationMain.c Executing Python Main File --
/Applications/Utilities/NonApple/Archimade.app/Contents/Resources/Python/Archimade.py

# &#231;a s'arr&#234;te l&#224;, l'appli se lance, puis les deux lignes suivante s'affiche quand je la quitte.

-- PyApplicationMain.c Python Exiting --
-- PyApplicationMain.c Exiting --
```





P.S.: merci pour le boulage et j'ai aussi ce truc l&#224; :
Vous devriez donner des points de r&#233;putation &#224; d'autres avant d'en offrir de nouveau &#224; tatouille
c'est nul qu'il faille en donner &#224; 25 membres avant de pouvoir en redonner &#224; quelqu'un, moi je tra&#238;ne presque que dans les forums de d&#233;veloppement, ben avant que j'ai boulet 25 personnes, il s'en passe du temps et pendant ce temps je ne peut pas boulet ceux qui le m&#233;rite...

#PIAF : c'est rigolo de lancer les appli comme &#231;a j'avais jamais essayer...
J'ai fait pareil avec iTunes apr&#232;s on peux s'amuser &#224; quitter l'appli comme un bourrain  ^C


----------



## jfxav (27 Août 2006)

Filou53 a dit:
			
		

> Je d&#233;bute sur Python et je fais mes premiers pas avec 'Apprendre &#224; programmer avec Pyton' de G Swinnen (la version pdf).
> 
> Je travaille avec Python 2,4,3 et Idle 1,1,3
> 
> ...



tu as essay&#233; de lancer le script a partir du terminal?
si tu restes dans idle Tkinter ne marchera pas
chez moi ca tourne avec la meme config python et idle
ceci dit c vrai que Tkinter fait parfois un peu sommaire....


----------



## Filou53 (27 Août 2006)

Finalement, après qq essais foireux, j'ai retesté mon code ligne par ligne...

Comme cela ne changeait rien, je me suis dit que le problème venait peu-être de Idle :hein: 
et de fait, en essayant avec ScrIde ( http://projects.gandreas.com/scride/index ), cela fonctionne sans rien changer  

yapluka continuer les leçons du tutorial, mais j'ai pris du retard :rose: 

Merci à tous pour votre aide,

Filou


----------



## Gallenza (8 Septembre 2006)

Bonjour, d&#233;sol&#233; de ne pas avoir r&#233;pondu plus t&#244;t mais &#231;a fait tr&#232;s longtemps que j'&#233;tais pas venu sur le forum.
Filou53 pour l'explication de ton probl&#232;me c'est tr&#232;s simple....tu n'as pas d&#251; lire toute la doc ^^.
Bon sans rentrer dans les d&#233;tails, OS X est un peu particulier, et pour pouvoir int&#233;ragir avec les f&#233;n&#234;tre il faut r&#233;pondre &#224; certaines contraintes que le shell Python standard (qui marche pareil sous Linux et window$) ne fait pas.
C'est pour &#231;a que pour lancer une appli graphique avec Tkinter sous MacOSX il faut utiliser "pythonw" qui est fournit en standard.
$ pythonw tonappli
ou alors
$ ./tonappli
avec #! /usr/bin/env pythonw en prmi&#232;re ligne de ton script et les droits mis en &#233;xecution.


----------



## Gallenza (8 Septembre 2006)

Juste un mot (je suis oblig&#233 sur le d&#233;bat Tk/wx.
D'abord Tatouille tes propos ton faux, Tk N'est PAS obsol&#232;te. Il est maintenu et fonctionnel.
Par contre oui, Tk est relativement simple et peu puissant et ne sera pas amen&#233; &#224; &#233;voluer  sur ce point.
Voil&#224; il &#224; cependant deux &#233;normes avantages :
- C'est le tooolkit le plus simple &#224; utiliser qui existe, donc pour d&#233;buter en programmation UI sans s'en d&#233;gouter c'est plut&#244;t pas mal, et de plus aucune application qu'on d&#233;veloppe tout seul dans son coin ne demande plus que ce qu'il fournit.
- C'est le toolkit de la lib strandard de Python, donc &#231;a veut dire que si tu fournis ton script pour Linux t'es s&#251;r qu'il fonctionne (tous les linux ont python d'install&#233, et la personne qui aura install&#233; son python sous windows &#231;a fonctionnera aussi sans avoir &#224; aller downloader/installer d'autres packages, choses que parfois(souvent) on n'a pas envie de faire ou on a pas les droits d'administration pour le faire.


----------



## tatouille (8 Septembre 2006)

Gallenza a dit:


> Juste un mot (je suis oblig&#233 sur le d&#233;bat Tk/wx.
> D'abord Tatouille tes propos ton faux, Tk N'est PAS obsol&#232;te. Il est maintenu et fonctionnel.
> Par contre oui, Tk est relativement simple et peu puissant et ne sera pas amen&#233; &#224; &#233;voluer  sur ce point.
> Voil&#224; il &#224; cependant deux &#233;normes avantages :
> ...



Tk N'est PAS obsol&#232;te

oui c'est les dire du createur de python .et du core team 
qui a apell&#233; ( voila plus de trois ) l'equipe &#224; tk de se joindre a wx ...
...................................
.......................................
.............................................
........................................................

a part super au courant le mec ............................
..............................
....................................

et c'est bizarre je t'ai jamais vu sur la mailing list python
...................................
.......................................................
................................................................


----------



## Gallenza (8 Septembre 2006)

Tatouille tu me fais bien rire, tu fais parti des nombreux lobbyistes qui s'&#233;chinent &#224; vouloir faire de wx la lib graphique par d&#233;faut de Python et qui se voient opposer un nom gentil mais ferme et d&#233;finitif par Guido...alors mdr


----------



## tatouille (8 Septembre 2006)

c'est bizare je me souviens d'une interview de Guido Van Rossum (google inc.)
disant le contraire ....


----------



## Gallenza (9 Septembre 2006)

peut-&#234;tre lis-tu ce que tu voudrais qu'il y soit &#233;crit?


----------



## tatouille (9 Septembre 2006)

"That's the best GUI toolkit given a number of constraints.  
The only reason wxPython isn't the standard Python GUI toolkit 
is that tkInter was there first.  
Believes wxPython is the most mature cross platform toolkit"

PyCON 2004 
Ballroom
-- Guido van Rossum

 "Tkinter is dead, Java is dead, wxPython rules! That's all there is to say."

-- Robert Roebling[SIZE=-1] [/SIZE]

 Thanks for such fantastic work on wxPython.  As a newcomer to Python the power of this GUI library blows me away.  I will never use anything else.

-- Mark Evans




........................................

&#224; part &#231;a le python core team raconte n'importe quoi et je lis ce que je veux .....................

t'es grave mec


----------



## Gallenza (10 Septembre 2006)

Autant de mauvaise foi est path&#233;tique: tu parlais de propos de Guido qui n'existent pas qui diraient le contraire de ce que j'ai dit : qu' il a toujours maintenu que m&#234;me si wx &#233;tait tr&#232;s bien et plus puissant que Tkinter, il ne serait pas le toolkit par d&#233;faut de Python.
Et tu me sors que Guido dit que wx c'est bien (je ne l'ai jamasi ni&#233;, ni lui !!!),la belle affaire!!!
Et des propos d'autres personnes qui par essence ne sont donc PAS Guido qui est le SEUL et UNIQUE Benevolent Dictator For Life de Python.
De fait l'interview o&#249; Guido tiens les propos que tu lui faisais tenir tu l'as fum&#233;e, et tes propres citations te d&#233;cridibilisent, c'&#233;tait tellement plus simple de reconnaitre que tu t'&#233;tais tromp&#233; en pr&#233;tant des propos &#224; Guido qu'il n'a jamais tenu( et que de plus il en tiendra jamais).


----------



## tatouille (10 Septembre 2006)

Gallenza a dit:


> Autant de mauvaise foi est path&#233;tique: tu parlais de propos de Guido qui n'existent pas qui diraient le contraire de ce que j'ai dit : qu' il a toujours maintenu que m&#234;me si wx &#233;tait tr&#232;s bien et plus puissant que Tkinter, il ne serait pas le toolkit par d&#233;faut de Python.
> Et tu me sors que Guido dit que wx c'est bien (je ne l'ai jamasi ni&#233;, ni lui !!!),la belle affaire!!!
> Et des propos d'autres personnes qui par essence ne sont donc PAS Guido qui est le SEUL et UNIQUE Benevolent Dictator For Life de Python.
> De fait l'interview o&#249; Guido tiens les propos que tu lui faisais tenir tu l'as fum&#233;e, et tes propres citations te d&#233;cridibilisent, c'&#233;tait tellement plus simple de reconnaitre que tu t'&#233;tais tromp&#233; en pr&#233;tant des propos &#224; Guido qu'il n'a jamais tenu( et que de plus il en tiendra jamais).



http://www.sauria.com/~twl/conferences/pycon2004/20040325/Guido%20Keynote.txt

http://mail.python.org/pipermail/python-list/2004-November/249562.html

http://aspn.activestate.com/ASPN/Mail/Message/wxPython-users/2039581

tu t'enfonces et de plus je peux te donner les adresses d'une 15ene de personne
qui y &#233;taient et qui ont toutes forc&#233;ment hallucin&#233;es et mal comprises ou fum&#233;es .....
 je crois qu'elles ne vont pas appr&#233;cier ta th&#233;orie 

path&#233;tique oui  et ton fran&#231;ais et comme celui de google pire que le mien 

allez il est marrant  tu devrais postuler
pour n'importe qui dot com


----------



## Gallenza (10 Septembre 2006)

T'es un vrai malade, redonner 1000 fois le lien o&#249; Guido dit que "wx c'est bien mais ne sera pas le toolkit par d&#233;faut" ne le transformera pas plus en "wx sera le toolkit par d&#233;faut".
Pourquoi te donnes-tu autant de mal &#224; faire piti&#233;?


----------



## tatouille (10 Septembre 2006)

Gallenza a dit:


> T'es un vrai malade, redonner 1000 fois le lien o&#249; Guido dit que "wx c'est bien mais ne sera pas le toolkit par d&#233;faut" ne le transformera pas plus en "wx sera le toolkit par d&#233;faut".
> Pourquoi te donnes-tu autant de mal &#224; faire piti&#233;?



t'es p&#233;nible ds ta connerie

The only reason wxPython isn't the standard Python GUI toolkit 
is that tkInter was there first.

Tinker est juste maintenue pour des raisons de compatibilit&#233; 
et de ne pas fermer la porte &#224; d'anciennes applications

on s'en fou du toolkit par d&#233;fault 
quand tu commences une appli en 2006 tu n'utilises pas Tinker 
c'est tout 
 mais bon pour &#231;a faut savoir coder ....................

et c'est sur Tinker avec son syteme d'event ( et pas moche du tout je parle pas de la gestion bipmap )
c'est pas la galere et c'est super puissant 

ca se voit que tu as utilis&#233; les 2  ....................

et vas y pendant que tu y est sur ton Linux mets une X11R2
histoire de te facilit&#233; la tache


----------



## molgow (10 Septembre 2006)

On se dirait &#224; la maternelle ici. 
Dehors les enfants !


----------

