Pyglet.gl на anaconda3 и pycharm: ValueError: можно назначать только последовательности одинакового размера - PullRequest
1 голос
/ 06 февраля 2020

Я использую pyglet.gl на anaconda3 и pycharm. Независимо от того, какой код я запускаю, он всегда имеет такую ​​же ошибку:

Traceback (most recent call last):
  File "D:/untitled5/learn.py", line 26, in <module>
    window = MyWindow(1280,720, "My Pyglet Window", resizable=True)
  File "D:/untitled5/learn.py", line 15, in __init__
    self.triangle = Triangle()
  File "D:/untitled5/learn.py", line 6, in __init__
    ('c3B', [100,200,220, 200,110,100, 100,250,100]))
  File "C:\Users\the1s\.conda\envs\pyrer\lib\site-packages\pyglet\graphics\__init__.py", line 293, in vertex_list
    return _get_default_batch().add(count, 0, None, *data)
  File "C:\Users\the1s\.conda\envs\pyrer\lib\site-packages\pyglet\graphics\__init__.py", line 373, in add
    vlist._set_attribute_data(i, array)
  File "C:\Users\the1s\.conda\envs\pyrer\lib\site-packages\pyglet\graphics\vertexdomain.py", line 453, in _set_attribute_data
    region.array[:] = data
ValueError: Can only assign sequence of same size

Process finished with exit code 1

Я попытался переустановить pyglet и удалить эту строку кода:

class Triangle:
    def __init__(self):
        self.vertices = pyglet.graphics.vertex_list(3, ('v3f', [-0.5,-0.5,0.0, 0.5,-0.5,0,0, 0.0,0.5,0.0]),
                                                       ('c3B', [100,200,220, 200,110,100, 100,250,100]))

Это работает, но не делает то, что Я хочу. (Я хочу, чтобы он отображал треугольник) Вот мой код:

from pyglet.gl import *

class Triangle:
    def __init__(self):
        self.vertices = pyglet.graphics.vertex_list(3, ('v3f', [-0.5,-0.5,0.0, 0.5,-0.5,0,0, 0.0,0.5,0.0]),
                                                       ('c3B', [100,200,220, 200,110,100, 100,250,100]))


class MyWindow(pyglet.window.Window):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.set_minimum_size(400, 300)
        glClearColor(0.2, 0.3, 0.2, 1.0)

        self.triangle = Triangle()

    def on_draw(self):
        self.clear()
        self.triangle.vertices.draw(GL_TRIANGLES)

    def on_resize(self, width, height):
        glViewport(0, 0, width, height)


if __name__ == "__main__":
    window = MyWindow(1280,720, "My Pyglet Window", resizable=True)
    pyglet.app.run()

Это тот же код из видео по этой ссылке: https://www.youtube.com/watch?v=Wyv5TnkFuxE&list=PL1P11yPQAo7qaq_Ga-XA7TvuB8jyI3Qjh

Я также попробовал код из другого видео, которое также использовало pyglet.gl, и оно показало ту же ошибку.

...