2

我编写了这段代码来用 Python 中的 Pyglet 打开一个窗口......

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 given)" 表示问题出在 font_size 或 color 参数上,但我不确定。有人可以解释什么是错的并帮助我完成这项工作吗?

4

3 回答 3

1

您给出的三个非关键字参数是对象实例Window、 和"Hello World"。它只需要对象实例。再次检查文档以了解该draw()方法采用哪些参数。考虑打印repr()ofmyLabel以便知道它是哪种类型。

于 2010-06-13T00:24:17.380 回答
1

您传递给 draw() 的三个非关键字参数是 myLabel(隐含,成为self)、Window 和“Hello World”。此方法的文档在此处

你确定你不打算做更多这样的事情吗?

myLabel = pyglet.text.Label("Hello World")
于 2010-06-13T00:28:45.663 回答
0

我从未使用过 pyglet,但根据文档,draw不带任何参数。

但是,构造函数确实采用了这些参数,因此以下内容是合法的:

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

这里

于 2010-06-13T00:26:18.120 回答