带有 Pyglet 的 PyImgui 使键盘输入加倍
PyImgui with Pyglet doubles keyboard input
我目前正在学习在 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。
有什么我遗漏或忽略的吗?
您实例化了 PygletRenderer 两次。
注释掉第一个实例对我有用:
#self.renderer = PygletRenderer(window)
感谢您 post 这样做!我刚刚发现了 pyimgui,这个 post 给了我一个开始的例子! :)
我目前正在学习在 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。
有什么我遗漏或忽略的吗?
您实例化了 PygletRenderer 两次。
注释掉第一个实例对我有用:
#self.renderer = PygletRenderer(window)
感谢您 post 这样做!我刚刚发现了 pyimgui,这个 post 给了我一个开始的例子! :)