PyIm gui с Pyglet удваивает ввод с клавиатуры - PullRequest
2 голосов
/ 28 апреля 2020

В настоящее время я учусь использовать PyIm gui в приложении Pyglet. Кажется, что пока все работает, но я озадачен тем, почему PyIm gui удваивает мои числовые c клавиатурные входы. Вот пример моего кода:

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. Однако вводы на клавишу Backspace не удваиваются и работают должным образом. Если бы я хотел ввести 1500, мне нужно было бы нажать 1, затем backspace, 5, затем backspace и 0 один раз.

Есть ли что-то, что я пропустил или пропустил?

1 Ответ

1 голос
/ 28 апреля 2020

Вы дважды создали экземпляр PygletRenderer.

Комментирование первого экземпляра сработало для меня:

#self.renderer = PygletRenderer(window)

Спасибо за публикацию этого! Я только что обнаружил pyim gui, и этот пост дал мне пример для начала! :)

...