2012-04-03 3 views
1

J'ai appris Python2.7 pour un petit peu maintenant. J'utilise Windows 7 64 bits BTW. J'ai commencé à apprendre les interfaces graphiques et j'ai essayé d'utiliser wxpython et IDLE pour cela. Donc, je tape du code:pythonw.exe ne répond pas

import wx 
app = wx.App() 
win = wx.Frame(None) 
win.Show() 
app.MainLoop() 

Je lance le programme, et la fenêtre s'ouvre, mais le donut bleu est là. J'essaie de fermer la fenêtre, et il dit que pythonw.exe ne répond pas. Une autre fenêtre apparaît à propos de wxpython. Il dit:

wxPython stdout/stderr(Not Responding) 

Traceback (most recent call last): 
**IDLE Internal Exception: 
File "C:\Python27\lib\idlelib\run.py", line 93, in main 
seq, request = rpc.request_queue.get(block=True, timeout=0.05) 
File "C:\Python27\lib\Queue.py", line 177, in get 
self.not_empty.wait(remaining) 
File "C:\Python27\lib\threading.py", line 263, in wait 
_sleep(delay) 
typeError: 'int' object is not callable 

Qu'est-ce qui ne va pas et comment puis-je le réparer?

Merci.

Répondre

2

L'incident se produit probablement au moment où vous essayez de démarrer la boucle d'événements. Voir ce rapport de bogue: http://bugs.python.org/issue989712

semble que quelqu'un d'autre est allé aussi loin pour essayer de créer une extension pour gérer cette capacité: http://idlex.sourceforge.net/extensions.html

En fait, ne le faites pas de IDLE. Écrivez un script et lancez-le depuis le shell ou le script directement dans Windows, en le nommant avec une extension .pyw et double-cliquez dessus. Il y a apparemment un conflit entre la propre boucle d'événements d'IDLE et celle des toolkits d'interface graphique.

+0

L'extension EventLoop.py d'IdleX permet à la boîte à outils wx de s'exécuter sans appeler app.Mainloop(). – Roger

0

Il semble que quelque chose pourrait être des variables polluantes dans la bibliothèque threading, il semble que la variable _sleep soit remplacée par une valeur int; dans ce cas _sleep(x) ne fonctionnera pas puisque _sleep est un int et int s ne sont pas appelables.

Il peut être dans votre code client ou dans un code cadre ou des bibliothèques que vous êtes import ing. Est-ce tout le code? Essayez d'exécuter ce code à partir d'un terminal python, et non d'un IDE tel que IDLE.

+0

Oui, c'est tout. –