【问题标题】:PyMunk does not create window - PythonPyMunk 不创建窗口 - Python
【发布时间】:2017-08-27 17:40:49
【问题描述】:

我正在尝试学习 PyMunk 库,我使用了他们网站上的示例。 这是一个代码:

import pymunk               # Import pymunk..

space = pymunk.Space()      # Create a Space which contain the simulation
space.gravity = 0,-1000     # Set its gravity

body = pymunk.Body(1,1666)  # Create a Body with mass and moment
body.position = 50,100      # Set the position of the body

poly = pymunk.Poly.create_box(body) # Create a box shape and attach to body
space.add(body, poly)       # Add both body and shape to the simulation

while True:                 # Infinite loop simulation
    space.step(0.02)        # Step the simulation one step forward

当我运行它时,窗口不显示,并且在 CMD 中显示:Loading chipmunk for Windows (64bit) [C:\Users\Theo\AppData\Local\Programs\Python\Python35\lib\site-packages\pymunk\chipmunk.dll] 并且不加载任何内容。我等了一个小时。有什么问题?

【问题讨论】:

    标签: python python-3.x pymunk


    【解决方案1】:

    您应该尝试将 PyMunk 与 PyGame 或 PyGlet 连接,以便能够通过窗口对任何结果进行虚拟化。 在此处查看更多信息:http://www.pymunk.org/en/latest/

    【讨论】:

      【解决方案2】:

      我在尝试运行演示时也有一个令人震惊的惊喜。

      所以,正如 @Teodor Cristian 所说,基本演示不会绘制任何内容,除非您连接可视化库。这些是可选的,如文档中所述:PyGamePyGlet

      这段代码不会尝试打开一个窗口,但是如果你添加一个打印语句,你会看到它确实“移动”了:

      while True:              
          space.step(0.02) 
          print(body.position)  # add this line
      

      您可以查看这些视频教程以插入 Pyglet(但以 1.5 倍的速度观看它们...):

      https://www.youtube.com/watch?v=0l2QrTNPCdc&list=PL1P11yPQAo7pH9SWZtWdmmLumbp_r19Hs&index=2

      Pyglet 的基本演示如下所示:

      import pymunk
      import pyglet
      from pymunk.pyglet_util import DrawOptions
      
      options = DrawOptions()
      
      window = pyglet.window.Window(800, 600, "Brackets")
      
      space = pymunk.Space()
      space.gravity = (0, -1000)
      
      body = pymunk.Body(1, 1666)
      body.position = 400, 500
      
      poly = pymunk.Poly.create_box(body, size=(100, 20))
      space.add(body, poly)
      
      
      # from here, the rest of the code is the render loop
      
      @window.event
      def on_draw():
          window.clear()
          space.debug_draw(options)
      
      
      def update(dt):
          space.step(dt)  # Step the simulation one step forward
      
      
      pyglet.clock.schedule_interval(update, 1.0 / 60)
      pyglet.app.run()
      

      另外,下载 Pymunk 示例文件夹并试用。其中一些使用pyglet,一些pygame

      https://github.com/viblo/pymunk/tree/master/examples

      Pyglet 也有一个示例文件夹,因此您也可以看到它是独立工作的:

      https://github.com/pyglet/pyglet/blob/master/examples/hello_world.py

      【讨论】:

      • 由于您和 user8467049 似乎有同样的困惑,我更新了自述文件以在 pymunk 中包含带有 drawoptions 的调试打印。我希望这对未来的用户有所帮助。
      猜你喜欢
      • 1970-01-01
      • 2020-10-22
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多