TypeError: draw() принимает ровно 1 аргумент, не являющийся ключевым словом (дано 3)

Я написал этот код, чтобы открыть окно с Pyglet в Python...

import pyglet
from pyglet import window

class Window(pyglet.window.Window):
    def __init__(self):
        super(Window, self).__init__()

        myLabel = pyglet.text.Label("Prototype")

        windowText = myLabel.draw(Window, "Hello World",
                        font_name = "Times New Roman",
                        font_size = 36,
                        color = (193, 205, 193, 255))

    def on_draw(self):
        self.clear()
        self.label.draw()

if __name__ == '__main__':
    window = Window()
    pyglet.app.run()

однако каждый раз, когда я запускаю его, я получаю эту ошибку:

TypeError: draw() takes exactly 1 non-keyword argument (3 given)

Насколько я знаю, «(3 дано)» означает, что проблема связана с аргументами font_size или color, но я не уверен. Может ли кто-нибудь объяснить, что не так, и помочь мне сделать эту работу?


person Amorack    schedule 13.06.2010    source источник


Ответы (3)


Три указанных вами аргумента, не являющиеся ключевыми словами, — это экземпляр объекта, Window и "Hello World". Он ожидает только экземпляр объекта. Еще раз проверьте документы, какие аргументы принимает метод draw(). Подумайте о том, чтобы распечатать repr() из myLabel, чтобы знать, какой это тип.

person Ignacio Vazquez-Abrams    schedule 13.06.2010

Три аргумента, не являющиеся ключевыми словами, которые вы передаете функции draw(), — это myLabel (подразумевается, становится self), Window и «Hello World». Документация по этому методу находится здесь.

Вы уверены, что не собирались делать что-то подобное?

myLabel = pyglet.text.Label("Hello World")
person ʇsәɹoɈ    schedule 13.06.2010

Я никогда не использовал pyglet, но согласно документации draw не принимает никаких параметров.

Однако конструктор принимает эти параметры, поэтому следующее будет законным:

label = pyglet.text.Label('Hello, world',
                          font_name='Times New Roman',
                          font_size=36,
                          x=10, y=10)

Из здесь.

person Mark Byers    schedule 13.06.2010