Python:关闭pyglet窗口

问题描述 投票:0回答:1

我在代码中使用的是基于像素的gym环境。由于某些原因,我需要修改render函数。使用pyglet,我使用ShowRenderrender函数创建了自己的类close

import cv2
import pyglet
from gym.envs.classic_control import rendering

class ShowRender(object):

    def __init__(self):
        self.viewer = rendering.SimpleImageViewer()
        self.viewer.width = 512
        self.viewer.height = 512
        self.viewer.window = pyglet.window.Window(width=self.viewer.width, height=self.viewer.height,
                                                  display=self.viewer.display, vsync=False, resizable=True)

    def render(self, observation):
        self.viewer.imshow(observation)

    def close(self):
        self.viewer.close()

功能render可以正常工作:创建一个新窗口并显示环境的像素。但是当我使用close功能时,窗口保持打开状态并且不会消失。有什么建议可以正确关闭它吗?谢谢

python-3.x window pyglet openai-gym
1个回答
0
投票

[添加此内容后,问题被标记为已解决,在上面的评论中进行讨论之后,解决方案非常简单。通过执行.close()在窗口对象上调用self.viewer.window.close()

import cv2
import pyglet
from gym.envs.classic_control import rendering

class ShowRender(object):

    def __init__(self):
        self.viewer = rendering.SimpleImageViewer()
        self.viewer.width = 512
        self.viewer.height = 512
        self.viewer.window = pyglet.window.Window(width=self.viewer.width, height=self.viewer.height,
                                                  display=self.viewer.display, vsync=False, resizable=True)

    def render(self, observation):
        self.viewer.imshow(observation)

    def close(self):
        self.viewer.window.close()
© www.soinside.com 2019 - 2024. All rights reserved.