Закрытие пользовательского всплывающего меню в JustpyPython

Программы на Python
Anonymous
Закрытие пользовательского всплывающего меню в Justpy

Сообщение Anonymous »

Я использую Justpy v0.14 и пытаюсь реализовать очень простое всплывающее меню. Есть кнопка, при нажатии появляется всплывающее окно. Всплывающее окно должно закрываться, когда пользователь нажимает где-нибудь за пределами области всплывающего окна.
Есть идеи, как это сделать?
Я пробовал это:

Код: Выделить всё

import justpy as jp

def home_page(request):
wp = jp.WebPage()

userButton = jp.Button(type='button', aria_expanded='false', aria_haspopup='true', text="user", a=wp)
userMenu = jp.Div(classes='absolute right-0 z-10 mt-2 w-48 origin-top-right rounded-md bg-white py-1 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none invisible', role='menu', aria_orientation='vertical', aria_labelledby='user-menu-button', tabindex='-1', a=wp)
p1 = jp.Div(a=userMenu, text="Option 1")
userMenu.isVisible = False

userButton.userMenu = userMenu

def userMenuClick_out(self, msg):
if userMenu.isVisible:
userMenu.set_class('invisible')
userMenu.isVisible = False

def toggleUserMenu(self, msg):
if self.userMenu.isVisible:
self.userMenu.set_class('invisible')
self.userMenu.isVisible = False
else:
self.userMenu.set_class('visible')
self.userMenu.isVisible = True

userMenu.on('click__out', userMenuClick_out)
userButton.on('click', toggleUserMenu)

return wp

jp.justpy(home_page)
Однако событие click__out срабатывает также, когда пользователь нажимает кнопку (поскольку кнопка находится за пределами меню), поэтому в результате всплывающее окно немедленно закрывается. после открытия.
Я попытался переместить назначение обработчика событий click__out на обработчик событий нажатия кнопки, надеясь, что оно будет назначено динамически. Но, похоже, это не работает.

Подробнее здесь: https://stackoverflow.com/questions/788 ... -in-justpy

Вернуться в «Python»