pyglet on_draw 事件仅在鼠标移动时发生

2023-12-31

我有一个奇怪的问题。当 pyglet 应用程序启动时,它只绘制 1-2 帧然后冻结。 on_draw 事件停止发生。但每次我移动鼠标或按键时, on_draw 事件也会调度。简而言之,我必须移动鼠标才能使我的 pyglet 应用程序基本工作。

这实际上发生在 Windows 中。在带有 compiz 的 Ubuntu 中,我只需移动鼠标一次,应用程序就可以开始正常工作。

这是我的代码示例:

#!/usr/bin/env python

import pyglet

win = pyglet.window.Window(width=800, height=600)
label = pyglet.text.Label('Abc', x=5, y=5)

@win.event
def on_draw():
    win.clear()
    label.x += 1
    label.draw()

pyglet.app.run()

Here's a video http://viert.fm/pyglet_on_draw_event.swf解释事情。


我昨晚在试图解决同样的问题时遇到了这个问题。我弄清楚是什么原因造成的。

我使用了装饰器并将更新放入 on_draw 方法中,它会正常运行一段时间,然后它会冻结,只有当我移动鼠标或敲击键盘时才能再次开始工作。我尝试了各种技巧来解决这个问题,最后我想也许事情运行得太快了,将它们放入批处理中并让 pyglet 决定何时更新它们会更好。有效。

我还安排了一些事情,以便它们的运行速度大约是我的刷新率的两倍,但又不会太快,以免让一切陷入困境。这对于流畅的动画来说已经足够了。

needles_list = [gauges.speedometer.Needle(speedometer_data, needle, batch=batch, group=needles),
                gauges.tachometer.Needle(tachometer_data, needle, batch=batch, group=needles)]

def update(dt):
for needle in needles_list:
    needle.update(dt)

pyglet.clock.schedule_interval(update, 1/120.0)

gauges.speedometer.Needle 和 gauges.tachometer.Needle 是 pyglet.sprite.Sprite 的子类,我为它们每个都编写了一个更新方法。然后我像平常一样在 on_draw 中调用他们的绘制方法。

@window.event()
def on_draw():
    window.clear()
    batch.draw()

我知道这个问题已经有一段时间了,提问者可能已经放弃了,但希望它能帮助其他遇到这个问题的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pyglet on_draw 事件仅在鼠标移动时发生 的相关文章

  • Pyglet设置窗口标题

    Pyglet教程 Caption The window s caption appears in its title bar and task bar icon on Windows and some Linux window manage
  • numpy 数组在 pyglet 中显示不正确

    我在使用 pyglet 显示 numpy 数组时遇到问题 我发现了一个非常相似的主题 如何使用 pyglet 显示 numpy 数组 我用过的 我想以灰度显示数组 但 pyglet 用颜色显示它 请参见图像 https i stack im
  • 如何让 USB 控制器/游戏手柄与 python 一起工作

    我有一个 USB 控制器 我正在尝试从 Microsoft SideWinder 即插即用游戏手柄获取输入 我在尝试弄清楚如何正确接收其输入时遇到困难 不幸的是 我无法使用 pygame 因为它需要一个窗口来接收输入 但我必须生成一个 py
  • 基本的 openGL、顶点缓冲区和 pyglet

    编辑 rotoglup 在我的代码中发现了问题 添加我删除的着色器完成了解决方案 请参阅下面我的答案以获取正确的代码 带有着色器 Hi all 我正在尝试从中学习现代 OpenGL 的一些基础知识本教程 我想用 python pyglet
  • 如何在pyglet中连续播放音乐

    我和我的朋友正在开发一款游戏 我们希望音乐在游戏运 行时循环播放 求助 好像没有重复播放音乐的功能 在当前版本的 pyglet 中 您应该使用SourceGroup 设置loop归因于True 然后您可以将其排队到Player播放它 snd
  • Pyglet 的 FPS 是显示器刷新率的一半

    我是 Pyglet 的新手 我编写了一个小程序 可以在屏幕上移动一个球 现在我很难建立 60 fps 的稳定帧速率 虽然 Pyglet 应该与我的显示器的 60Hz 刷新率同步 但 Pyglet 将我的 fps 设置为刷新率的一半 例如 当
  • 在python中使用pyglet,为什么我的鼠标拖动时帧速率会加快?

    我使用 python 的 pyglet 包编写了一个简单的图像显示 在我的Linux笔记本电脑 代码按照我的预期运行 显示恒定的每秒 60 帧 在我的 Windows 7 桌面上 相当新 Xi然而 使用 GeForce GTX 550 Ti
  • Pyglet 使用过多的 cpu

    我最近开始从 pygame 开始接触 pyglet 和 rabbyt 但我遇到了一些障碍 我创建了一个基本示例 其中一个 Sprite 在 pyglet sprite Sprite 中找到的类型 以每秒 60 帧的速度显示 问题是这个简单的
  • pyglet (python) 中的像素绘图

    好的 我厌倦了谷歌搜索和阅读大量文档却没有任何结果 我的目标很简单 让 pyglet 逐像素绘制图像 我已经搜索了几个小时但没有结果 谁能举一个在显示器上绘制并逐像素指定颜色的简短程序的示例 例如 绘制从黑到白的渐变 只要您意识到这需要一段
  • pyglet on_draw 事件仅在鼠标移动时发生

    我有一个奇怪的问题 当 pyglet 应用程序启动时 它只绘制 1 2 帧然后冻结 on draw 事件停止发生 但每次我移动鼠标或按键时 on draw 事件也会调度 简而言之 我必须移动鼠标才能使我的 pyglet 应用程序基本工作 这
  • 如何播放 mp3

    我的问题从这里开始 pyttsx 和 gTTS 模块错误 https stackoverflow com questions 36323564 pyttsx and gtts module errors gTTS 效果很好 从文本文件中获取
  • 如何使用 pyglet 显示 numpy 数组?

    我有一个尺寸为 100 100 的标签矩阵 存储为 numpy 数组 我想用 pyglet 显示该矩阵 我最初的想法是使用这个矩阵通过函数 pyglet image ImageData 形成一个新的 pyglet 图像 它需要图像数据的缓冲
  • pyglet 将屏幕分辨率转换为变量

    有没有任何选项如何获取值height and width使用 pyglet 将屏幕转换为变量 我可以打印它 但无法提取这些值 import pyglet platform pyglet window get platform display
  • pyglet:按下按钮时更改精灵实例的图像

    此代码显示图像assassin1 png在黑色背景上 一旦我按下按键 图像就会向右移动 一旦松开按键 图像就会停止移动 一旦我按下该键 它也应该更改为图像assassin2 png当我松开按键时 它应该变回assassin1 png 然而
  • 射线交叉未击中目标

    我正在尝试选择一个 3d 点 我阅读了各种网站 但我的代码不起作用 鼠标右键单击 glGetFloatv GL MODELVIEW MATRIX mv mat glGetFloatv GL PROJECTION MATRIX p mat i
  • 为什么 Pyglet 不能正确绘制多边形?

    我随机创建点用于使用 Pyglet 绘制多边形 但 Pyglet 大多数时候都不能正确完成工作 好吧 我尝试用另一个图形模块绘制多边形 实际上它有效 但如果 Pyglet 工作正常 它会让我的工作变得更容易 我用它来绘制多边形和点 以方便您
  • 如何让 Pyglet 为 Python 3 工作?

    我很高兴能使用 Pyglet 因为它的所有功能 但是我在 Python 3 上安装 Pyglet 的最新开发版本时遇到问题 我知道人们已经问过这个问题 但没有一个回答对我有任何帮助 更新 我的意思是 我无法为 Python 3 安装 Pyg
  • tkinter 和 pygame 不想在一个窗口中工作[重复]

    这个问题在这里已经有答案了 我想创建一个应用程序 并希望使用 tkinter 作为 GUI 并使用 Pyglet 和 Pygame 等游戏库之一 我没有找到任何有关将 pyglet 嵌入 tkinter 的信息 但找到了一些使用 tkint
  • 使用draw()而不是eventloop时的pyglet

    我正在尝试用 pyglet 画一个圆 但当我使用 draw 函数而不是 app run 循环时 它是不可见的 有什么建议我可以做什么吗 谢谢 from math import from pyglet gl import window pyg
  • 为什么 pyglet 比 pygame 慢?

    这是代码 5000 个弹跳旋转的红色方块 16x16 png 在 pygame 版本上 我得到 30 fps 但使用 pyglet 得到 10 fps 对于这种事情 OpenGl 不是应该更快吗 pygame版本 import pygame

随机推荐

  • spect.getmembers() 与 __dict__.items() 与 dir()

    谁能用足够的例子向我解释黑白有什么区别 gt gt gt import inspect gt gt gt inspect getmembers 1 and gt gt gt type 1 dict items and gt gt gt di
  • 创建 SwiftUI 侧边栏

    我想使用 SwiftUI 构建一个非常简单的 iOS 14 侧边栏 设置很简单 我有三个视图HomeView LibraryView and SettingsView和代表每个屏幕的枚举 enum Screen Hashable case
  • jquery blockUI 判断页面或特定元素是否被阻止

    有没有办法判断 blockUI 是否有效已被调用但 unblockUI 尚未被调用 理想情况下 这应该能够阻止整个页面和特定元素 我希望它能像这样工作 gt blockUI gt isBlockUI gt gt true gt unbloc
  • HTML5 文档中的多个

    使用多个可以吗
  • WPF 网格不显示滚动条

    在 NET 3 5 中 我在窗口中有一个网格 我正在用按钮填充这个网格 当按钮填满网格并消失时 网格不会显示滚动条 我已将网格垂直滚动设置为可见 但它仍然不显示
  • 如何围绕特定点来回旋转物体?

    我正在使用 Raphael JS 尝试围绕中心点下方的点旋转图像形状 如何才能做到这一点 我已经尝试过以下方法 但它不起作用 var playBBox playButtonRef getBBox var xPos playBBox x pl
  • Spring Boot - 从依赖 jar 加载 application.properties/yml

    我有一个 Spring Boot 应用程序 我想按特定顺序将值注入到 ConfigurationProperties bean 中 例如 ConfigurationProperties myproperties class MyProper
  • 获取资源管理器窗口排序的字段

    我想知道是否有办法知道 Windows 资源管理器窗口中的文件是如何排序的 有点像窗口的 ORDER BY 子句 示例 名称升序 或 修改日期降序 这个问题不是关于 Windows 的名称排序算法 而是关于特定打开的 Windows 资源管
  • RVO(返回值优化)适用于所有对象吗?

    Is RVO 返回值优化 http en wikipedia org wiki Return value optimization 保证或适用于 C 编译器 特别是 GCC 中的所有对象和情况 如果答案是 否 那么类 对象的这种优化的条件是
  • 将命令行参数传递给随 Poetry 安装的 Python 脚本

    诗歌文档 https python poetry org docs pyproject scripts表示脚本部分可用于在安装包时安装脚本或可执行文件 但它没有显示任何如何将参数传递给脚本的示例 您如何才能接收argparse函数中的参数
  • IntelliJ JDK 16 抢先体验 - 有成功吗?工具.jar

    有没有人使用 JDK 16 取得过成功 https jdk java net 16 https jdk java net 16 使用 IntelliJ 进行早期访问构建 我能够使用 JDK 15 早期访问版本 但是当我尝试 JDK 16 时
  • 删除一项内的内容时在行上方创建神秘空间

    我有一个包含一些项目的网格 当我单击任何项 目时 我会将该项目的内容移动到模式中 该模式效果很好 但是当我从项目中删除内容时 项目上方会出现一个空格 我知道解决这个问题的方法可能是使用弹性盒 它工作得很好 但我想了解这里发生了什么 这里可能
  • CSS3 高度 100%

    我不知道如何问 写这个 所以请随时更新名称或指出正确的问题 标题 我正在设计一个跨 html5 css3 网站 并试图使其在每个 常见 浏览器上看起来都相同 这就是我所拥有的 http www pojotlan com example1 h
  • ProgressBars 和 Espresso

    当我在运行一些浓缩咖啡测试时显示的布局中有一个进度条时 然后我遇到 Caused by android support test espresso AppNotIdleException Looped for 1670 iterations
  • 在调试之前尝试启动带有任务的服务器时出现“无法跟踪指定的任务”

    我的调试配置如下launch json type node request attach preLaunchTask npm start name Attach port 9090 这是定义在中的任务tasks json type npm
  • C++ 和 D 中的元编程

    C 中的模板机制只是意外地对模板元编程有用 另一方面 D 是专门为促进这一点而设计的 显然它更容易理解 或者我听说过 我没有使用 D 的经验 但我很好奇 当涉及到模板元编程时 在 D 中可以做什么而在 C 中不能做什么 在 D 中帮助模板元
  • Android:自定义视图的默认属性

    我有一个扩展框架类之一的自定义视图 最多ViewAndroid 中的 s 为它们定义了一些默认属性 例如Button可点击 由以下设置android clickable true 如何为我的自定义视图提供应用程序范围的默认值 我这样解决了我
  • 如何在文件更改时更新 UI

    你好 我正在使用几个 Excel 文件构建一个闪亮的仪表板 我在框的页脚中插入了这些文件的链接 我想refresh更改我的 Excel 文件中的某些内容时的闪亮仪表板 我不想每次都运行整个 R 代码 文件内容更改后如何重新渲染输出 这里有一
  • ColladaLoader 和 ProgressCallback

    实施的正确方法是什么加载栏 in ColladaLoader 源代码显示加载器采用三个参数 其中一个是progressCallback progressCallback total length loaded request respons
  • pyglet on_draw 事件仅在鼠标移动时发生

    我有一个奇怪的问题 当 pyglet 应用程序启动时 它只绘制 1 2 帧然后冻结 on draw 事件停止发生 但每次我移动鼠标或按键时 on draw 事件也会调度 简而言之 我必须移动鼠标才能使我的 pyglet 应用程序基本工作 这