You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Arcade库运行示例代码最小化窗口后黑屏如何解决?

问题原因

你遇到的最小化恢复后窗口黑屏问题是Arcade 2.5.7版本在Windows平台的已知特性:

  • 你当前的代码仅在程序启动时执行了一次渲染逻辑,窗口最小化再恢复时,系统会清空原有的OpenGL渲染缓冲
  • 该版本没有为单帧一次性渲染的场景自动做重绘缓存,因此缓冲清空后就会显示全黑
解决方案

方案1:升级Arcade版本

直接升级到Arcade最新稳定版即可解决,该版本已经针对这类简单渲染场景的重绘逻辑做了优化,无需修改代码即可正常使用。
升级命令:

pip install --upgrade arcade

方案2:修改为标准的Arcade类写法

如果要保留当前2.5.7版本,只需要把渲染逻辑放到on_draw回调方法中,窗口每次需要重绘时都会自动调用该方法重新绘制内容,不会出现黑屏问题。
修改后的代码示例:

import arcade

class MyGame(arcade.Window):
    def __init__(self, width, height, title):
        super().__init__(width, height, title)
        arcade.set_background_color(arcade.color.WHITE)
        # 提前加载纹理避免每次渲染都重复加载
        self.texture = arcade.load_texture(":resources:images/space_shooter/playerShip1_orange.png")

    def on_draw(self):
        # 每次重绘都会执行这里的逻辑
        self.clear()
        # 你原来的所有绘制逻辑都可以放到此处
        # 绘制网格
        for x in range(0, 601, 120):
            arcade.draw_line(x, 0, x, 600, arcade.color.BLACK, 2)
        for y in range(0, 601, 200):
            arcade.draw_line(0, y, 800, y, arcade.color.BLACK, 2)
        # 绘制点
        arcade.draw_text("draw_point", 3, 405, arcade.color.BLACK, 12)
        arcade.draw_point(60, 495, arcade.color.RED, 10)
        # 剩余的原绘制代码全部复制到此处即可
        # 绘制图片
        scale = .6
        arcade.draw_scaled_texture_rectangle(540, 120, self.texture, scale, 0)
        arcade.draw_scaled_texture_rectangle(540, 60, self.texture, scale, 45)

if __name__ == "__main__":
    game = MyGame(600, 600, "Drawing Primitives Example")
    arcade.run()

内容的提问来源于stack exchange,提问作者Gamestastic Programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:51:01