Python 3.x 带Pyglet的PyImgui可将键盘输入翻倍

Python 3.x 带Pyglet的PyImgui可将键盘输入翻倍,python-3.x,pyglet,imgui,Python 3.x,Pyglet,Imgui,我目前正在学习在Pyglet应用程序中使用PyImgui。到目前为止,一切似乎都在运行,但我很困惑为什么PyImgui会将我的数字键盘输入翻倍。 以下是我的代码示例: import pyglet import imgui import imgui.core from imgui.integrations.pyglet import PygletRenderer class UI: def __init__(self, window): imgui.create_con

我目前正在学习在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然后按backspace,5然后按backspace,再按0一次


我有没有遗漏或忽略了什么

您实例化了两次PygletRenderer

对第一个案例的评论对我来说很有效:

#self.renderer = PygletRenderer(window)

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

那是一种愚蠢的疏忽,非常感谢。这个解决方案对我有效。