2012-04-03 13 views
1

Ich habe Python2.7 jetzt ein wenig gelernt. Ich benutze Windows 7 64 Bit BTW. Ich fing an, GUI's zu lernen und habe versucht, wxpython und IDLE dafür zu benutzen. Also tippe ich einen Code aus:pythonw.exe reagiert nicht

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

Ich starte das Programm, und das Fenster erscheint, aber der blaue Donut ist da. Ich versuche, das Fenster zu schließen, und es sagt, dass pythonw.exe nicht reagiert. Ein weiteres Fenster erscheint über wxpython. Es sagt:

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 

Was ist falsch und wie repariere ich es?

Danke.

Antwort

2

Der Absturz erfolgt höchstwahrscheinlich an dem Punkt, an dem Sie versuchen, die Ereignisschleife zu starten. Sehen Sie diesen Bug-Report: http://bugs.python.org/issue989712

Scheint jemand anderes so weit gegangen ist, um zu versuchen und eine Erweiterung zu erstellen, um diese Fähigkeit zu handhaben: http://idlex.sourceforge.net/extensions.html

Grundsätzlich kann dies von IDLE nicht. Schreiben Sie ein Skript und führen Sie es direkt aus der Shell oder dem Skript aus, wenn Sie es in Windows verwenden, indem Sie es mit der Erweiterung .pyw benennen und doppelklicken. Es gibt offensichtlich einen Konflikt zwischen der eigenen Ereignisschleife von IDLE und denen von GUI-Toolkits.

+0

Die Erweiterung EventLoop.py von IdleX ermöglicht das Ausführen des wx-Toolkits ohne Aufruf von app.Mainloop(). – Roger

0

Es scheint, dass etwas die Variablen in der Bibliothek threading verschmutzen könnte, es sieht so aus, als ob _sleep Variable mit einem int Wert überschrieben wird; In diesem Fall _sleep(x) wird nicht funktionieren, da _sleep ist ein int und int s sind nicht aufrufbar.

Es kann in Ihrem Client-Code oder in einigen Framework-Code oder Bibliotheken sein Sie sind import ing. Ist das alles der Code?

Versuchen Sie, diesen Code von einem einfachen Python-Terminal auszuführen, nicht von einer IDE wie IDLE.

+0

Ja, das ist alles. –