Недавно я работал над проектом создания TUI для Telegram с помощью Python и Textual.
Но когда я пытаюсь добавить новые сообщения в msg_list, происходит перекомпоновка чата > класс. сообщения просто исчезают, и появляется только последнее сообщение. Я проверил msg_list, и да, сообщения добавляются в список.
и обратите внимание, что составление сообщения в первый раз не создает этой проблемы.
Это мой код, он немного Извините, это беспорядок.
Недавно я работал над проектом создания TUI для Telegram с помощью Python и Textual. Но когда я пытаюсь добавить новые сообщения в msg_list, происходит перекомпоновка чата > класс. сообщения просто исчезают, и появляется только последнее сообщение. Я проверил msg_list, и да, сообщения добавляются в список. и обратите внимание, что составление сообщения в первый раз не создает этой проблемы. Это мой код, он немного Извините, это беспорядок. [code]from textual.app import App, ComposeResult from textual.widgets import Footer, Header, Digits, Button, Label, Input from textual.containers import Horizontal, HorizontalGroup, VerticalScroll, VerticalGroup from textual import on from uuid import uuid4 from typing import Union import asyncio msgs = { 'uuid':'class' } class Message(VerticalGroup): uuid:Union[str, None] = None reply_to:Union[str, None] = None fullname:str = '' text:str = '' date:str = '' def compose(self) -> ComposeResult: fullname = Label(self.fullname) message_text = Label(self.text,expand=True, shrink=True) message_text.add_class('txt') send_date = Label(self.date) send_date.add_class('date') if isinstance(self.reply_to, str): reply_to = ' '+self.reply_to[:50] reply_to = Label(reply_to) yield reply_to yield fullname yield message_text yield send_date
@on(Input.Changed) def search_in_dialogs(self, event: Input.Changed) -> None: """Update the UI to show or hide dialogs based on search.""" if event.input.id == 'search': for dialog in dialogs: if event.input.value not in d_id[dialog.id].lower() : # Dynamically remove the dialog if it doesn't match the search query. dialog.add_class('hidden') else: try: dialog.remove_class('hidden') except: pass
def action_toggle_dark(self) -> None: """An action to toggle dark mode.""" self.theme = ( "textual-dark" if self.theme == "textual-light" else "textual-light" )
if __name__ == "__main__": msg_list.append(pack_a_message('me', 'self.inp.value', '12:12:12')) msg_list.append(pack_a_message('me', 'self.inp.value', '12:12:12')) app = ChocolateGram() app.run() [/code] Мне нужен способ обновить мой VirticalScroll. поэтому он может отображать как новые сообщения, так и старые.