PythonTurtle / PythonTurtle

A learning environment for Python suited for beginners and children, inspired by Logo.

Home Page:http://pythonturtle.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

break on Windows(

darvin opened this issue · comments

My fork is brocken on windows

Process TurtleProcess-1:
Traceback (most recent call last):
  File "C:\Python27\lib\multiprocessing\process.py", line 232, in _bootstrap
    self.run()
  File "C:\Documents and Settings\Admin\╠юш фюъєьхэЄ√\PythonTurtle\src\turtleprocess.py", line 64, in run
    self.turtle = Turtle()
  File "C:\Documents and Settings\Admin\╠юш фюъєьхэЄ√PythonTurtle\src\animals.py", line 99, in __init__
    self.position = Vector(self._get_random_position())
  File "C:\Documents and Settings\Admin\╠юш фюъєьхэЄ√PythonTurtle\src\animals.py", line 129, in _get_random_position
    if not cls.is_interliaced(pos):
  File "C:\Documents and Settings\Admin\╠юш фюъєьхэЄ√\PythonTurtle\src\animals.py", line 135, in is_interliaced
    size = Vector(cls._get_image().GetSize())/2
  File "C:\Documents and Settings\Admin\╠юш фюъєьхэЄ√\PythonTurtle\src\animals.py", line 160, in _get_image
    wx.Bitmap(from_resource_folder(Animal.image+".png"))
  File "C:\Python27\lib\site-packages\wx-2.8-msw-unicode\wx\_gdi.py", line 561, in __init__
    _gdi_.Bitmap_swiginit(self,_gdi_.new_Bitmap(*args, **kwargs))
PyNoAppError: The wx.App object must be created first!

it becouse use of wx function before wx.App... strange behavoir

(When pasting multiline code such as this, please indent the whole thing. (Add 4 spaces before each line.) This makes it get rendered properly. This time I did it for you.)

Are you familiar with the differences in the way multiprocessing operates on Windows in contrast to Linux/Mac? In Linux/Mac it uses fork, but in Windows it launches a new process with its own memory space. So all the objects you created in the original process are unaccessible.

Why does this matter here?

In wxPython, before you can do anything you gotta create a wx.App. This includes creating bitmap. I get the impression that you're trying to create a bitmap in the turtle process, and because our wx.App exists only in the original process, it fails.

How can this be solved?

I think the best solution would be to avoid creating bitmaps in the turtle process. It doesn't draw them anyway. It should tell the main process which bitmaps to draw, but it shouldn't be creating any of these bitmaps itself.

i hate windows. i will fix it thanks for explanation.
i hate windows

done close