如何在课程中使用pyglet

 三人行 发布于 2023-01-04 14:45

在我见过的有关Pyglet的所有Web教程中,似乎没有一个教程使用类来包含pyglet.window.Window实例。例如,大多数教程看起来像

import pyglet

game_window = pyglet.window.Window()

@game_window.event
def on_draw():
    #dostuff

while __name__ == "__main__":
    pyglet.app.run()

我在将这段代码重组为一个类时遇到麻烦。我打算这样做的代码在这里:

import pyglet
from pyglet.gl import *
from Board import Board

class Frontend:
    def __init__(self,xs, ys):
        self.GameInstance = Board(xs,ys)
        self.GameWindow = pyglet.window.Window(width=512, height=512,visible=False)

    @GameWindow.event
    def on_draw(self):
        self.GameWindow.clear()

f = Frontend()

运行此代码时,出现以下错误:

Traceback (most recent call last):
  File "C:/Users/PycharmProjects/Nothing/2048/Frontend.py", line 7, in 
    class Frontend:
  File "C:/Users/PycharmProjects/Nothing/2048/Frontend.py", line 13, in Frontend
    @GameWindow.event
NameError: name 'GameWindow' is not defined

当我更换@GameWindow.event@self.GameWindow.event在试图解决NameError我得到:

Traceback (most recent call last):
    File "C:/Users/PycharmProjects/Nothing/2048/Frontend.py", line 7, in 
    class Frontend:
    File "C:/Users/PycharmProjects/Nothing/2048/Frontend.py", line 13, in Frontend
    @self.GameWindow.event
NameError: name 'self' is not defined

我期望的。但是,我不确定该代码为什么不起作用-有人可以解释为什么以及如何解决它吗?

1 个回答
  • 您可以从Window继承。这应该工作:

    class Frontend(pyglet.window.Window):
        def __init__(self, xs, ys):
            self.GameInstance = Board(xs,ys)
            super().__init__(width=512, height=512,visible=False)
    
        def on_draw(self):
            self.clear()
    

    您的代码无法正常工作,因为您无法在方法之外引用Frontend类的实例。如果您只有Frontend类的一个实例,则可以执行以下操作:

    class Frontend:
        window = pyglet.window.Window()
        def __init__(self):
            ...
        @window.event
        def on_draw():
            ...
    

    2023-01-04 14:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有