【问题标题】:PyImgui with Pyglet doubles keyboard inputPyImgui 与 Pyglet 双打键盘输入
【发布时间】:2020-04-28 08:15:04
【问题描述】:

我目前正在学习在 Pyglet 应用程序中使用 PyImgui。到目前为止一切似乎都在工作,但我对为什么 PyImgui 将我的数字键盘输入加倍感到困惑。 这是我的代码示例:

import pyglet
import imgui
import imgui.core
from imgui.integrations.pyglet import PygletRenderer


class UI:
    def __init__(self, window):
        imgui.create_context()
        self.renderer = PygletRenderer(window)
        self.impl = PygletRenderer(window)
        imgui.new_frame()  
        imgui.end_frame()

        # Window variables
        self.test_input = 0

    def render(self):
        imgui.render()
        self.impl.render(imgui.get_draw_data())
        imgui.new_frame()

        imgui.begin("Test Window")
        imgui.text("This is the test window.")
        changed, self.test_input = imgui.input_int("Integer Input Test", self.test_input)

        imgui.end()

        imgui.end_frame()


class App(pyglet.window.Window):
    def __init__(self):
        super().__init__(800, 600, "Imgui Test")
        pyglet.clock.schedule_interval(self.update, 1/60)
        self.UI_test = UI(self)

    def on_draw(self):
        pass

    def update(self, dt):
        self.clear()
        self.UI_test.render()


app = App()
pyglet.app.run()

如果我在键盘上按 1,文本框会显示 11。但是,退格输入不会加倍并且按预期工作。 如果我想输入 1500,我必须按 1 然后退格,5 然后退格,然后按 0 一次。

我有什么遗漏或忽略的吗?

【问题讨论】:

    标签: python-3.x pyglet imgui


    【解决方案1】:

    您两次实例化 PygletRenderer。

    注释掉第一个实例对我有用:

    #self.renderer = PygletRenderer(window)
    

    感谢您发布此信息!我刚刚发现了 pyimgui,这篇文章给了我一个开始的例子! :)

    【讨论】:

    • 嗯,这是一个愚蠢的疏忽,非常感谢。该解决方案对我有用。
    猜你喜欢
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2017-06-01
    • 2021-06-26
    • 2012-03-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多