[Python] Python Textual Widget not refreshing

Discussão em 'Python' iniciado por Stack, Agosto 27, 2025.

  1. Stack

    Stack Membro Participativo

    I am new to the Textual library and I was trying to make widgets to update whenever data changes. This is a simple example of what I've tried:

    class TestBody(Static):
    data = reactive("")

    def compose(self) -> ComposeResult:
    yield Input()
    yield Label(f"Data: {self.data}")

    def on_input_submitted(self, message):
    self.data = message.value
    print("New data:", self.data)

    class MyApp(App):
    def compose(self) -> ComposeResult:
    yield Header()
    yield TestBody()
    yield Footer()

    if __name__ == "__main__":
    app = MyApp()
    app.run()


    In this example, I can type anything in the input component, and when submitted, it should be displayed by the label. But what actually happens is nothing; the label always displays "Data: ".

    By using the textual console tool, I can see that the submit message is definitely being sent and picked up by my handler. I can even see the data changing in the log, but the display does not update.

    [​IMG]

    I understand from the docs that I shouldn't need to use the refresh() method since I am using a reactive attribute. In any case, I tried to add self.refresh() inside on_input_submitted and it still did not work.

    I have the feeling that I am missing something about this library, but I couldn't find any similar examples.

    Thanks in advance.

    Continue reading...

Compartilhe esta Página