Я пытаюсь создать веб-приложение с NiceGUI, где пользователь может загрузить файл, а затем ему будет показано содержимое файла (или сообщение, любой текст в качестве элемента метки). Он работает нормально, за исключением того, что когда я загружаю второй файл, он сохраняет старый текст (что на самом деле имеет смысл, когда я думаю об этом), и даже если я обновляю страницу, старый текст все еще там.
Это код, который я написал, и я ожидал, что если пользователь обновит страницу, метки, созданные handle_upload
, исчезнут (аналогично тому, как элемент загрузки файла обновляется при обновлении страницы и больше не отображает ранее загруженные файлы ).
from nicegui import ui, events
import os
ui.label("Upload File")
ui.label('(Drag and drop into the box below, or use the "+" button to select a file)')
def handle_upload(file: events.UploadEventArguments) -> None:
ui.notify(f"uploaded {file.name} to {os.getcwd()}")
data = file.content.read()
with open(file.name, "wb") as f:
f.write(data)
lines = [line for line in data.splitlines() if line.strip()]
ui.label("Lines uploaded:")
for line in lines:
ui.label(line.decode())
ui.upload(on_upload=handle_upload, auto_upload=True).classes("max-w-full")
ui.run(title="Submit File")
1 ответ
Да, вызов ui.label
создает новый ярлык и добавляет его на страницу. Чтобы заменить такие элементы, как метка, новыми, вы можете использовать контейнер и очищать его перед добавлением новых элементов. В следующем примере контейнер output
имеет тип ui.column
и заполнен меткой «Загруженные строки:», а также содержимым файла:
def handle_upload(file: events.UploadEventArguments) -> None:
data = file.content.read()
lines = [line for line in data.splitlines() if line.strip()]
output.clear()
with output:
ui.label('Lines uploaded:')
for line in lines:
ui.label(line.decode())
ui.upload(on_upload=handle_upload, auto_upload=True)
output = ui.column()
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.