«TypeError: draw () принимает ровно 1 аргумент без ключевого слова (задано 3) - PullRequest
2 голосов
/ 13 июня 2010

Я написал этот код, чтобы открыть окно с 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)

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

Ответы [ 3 ]

1 голос
/ 13 июня 2010

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

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

myLabel = pyglet.text.Label("Hello World")
1 голос
/ 13 июня 2010

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

0 голосов
/ 13 июня 2010

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

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

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

С здесь .

...