类型错误:draw() 需要 1 个位置参数(给了 3 个)

2 投票
3 回答
1921 浏览
提问于 2025-04-15 23:53

我写了这段代码,用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 given)”的意思是问题出在字体大小或颜色的参数上,但我不太确定。有人能解释一下哪里出错了吗?并帮我解决这个问题吗?

3 个回答

0

我从来没有用过pyglet,但根据文档,draw这个方法是没有参数的。

不过,构造函数是需要一些参数的,所以下面的写法是合法的:

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

来自这里

1

你给的三个非关键字参数分别是对象实例、Window"Hello World"。其实它只需要对象实例。再看看文档,确认一下 draw() 方法需要哪些参数。你可以打印一下 myLabelrepr(),这样你就能知道它是什么类型了。

1

你传给draw()的三个非关键字参数分别是myLabel(这个是隐含的,实际上是self),Window,还有“Hello World”。关于这个方法的详细说明可以在这里找到。

你确定你不是想做成这样吗?

myLabel = pyglet.text.Label("Hello World")

撰写回答