В Python установлена UI библиотека Flet.
Есть меню, нужно чтобы при нажатии на кнопку "Из Active Directory" появилось всплывающее окно с кнопками.
import flet as ft
def main(page: ft.Page):
page.theme_mode = ft.ThemeMode.LIGHT
appbar_text_ref = ft.Ref[ft.Text]()
def handle_menu_item_click(e):
ft.WindowDragArea
page.update()
def handle_on_open(e):
print(f"{e.control.content.value}.on_open")
def handle_on_close(e):
print(f"{e.control.content.value}.on_close")
def handle_on_hover(e):
print(f"{e.control.content.value}.on_hover")
menubar = ft.MenuBar(
expand=True,
style=ft.MenuStyle(
alignment=ft.alignment.top_left,
bgcolor=ft.colors.RED_100,
mouse_cursor={ft.MaterialState.HOVERED: ft.MouseCursor.WAIT,
ft.MaterialState.DEFAULT: ft.MouseCursor.ZOOM_OUT},
),
controls=[
ft.SubmenuButton(
content=ft.Text("Мои компьютеры"),
on_open=handle_on_open,
on_close=handle_on_close,
on_hover=handle_on_hover,
controls=[
ft.MenuItemButton(
content=ft.Text("Из Active Directory"),
leading=ft.Icon(ft.icons.SETTINGS_SYSTEM_DAYDREAM),
style=ft.ButtonStyle(bgcolor={ft.MaterialState.HOVERED: ft.colors.GREEN_100}),
on_click=handle_menu_item_click
),
ft.MenuItemButton(
content=ft.Text("Из текстового файла"),
leading=ft.Icon(ft.icons.TEXT_SNIPPET),
style=ft.ButtonStyle(bgcolor={ft.MaterialState.HOVERED: ft.colors.GREEN_100}),
on_click=handle_menu_item_click
)
]
),
ft.SubmenuButton(
content=ft.Text("Настройки"),
on_open=handle_on_open,
on_close=handle_on_close,
on_hover=handle_on_hover,
controls=[
ft.SubmenuButton(
content=ft.Text("Zoom"),
controls=[
ft.MenuItemButton(
content=ft.Text("Magnify"),
leading=ft.Icon(ft.icons.ZOOM_IN),
close_on_click=False,
style=ft.ButtonStyle(bgcolor={ft.MaterialState.HOVERED: ft.colors.PURPLE_200}),
on_click=handle_menu_item_click
),
ft.MenuItemButton(
content=ft.Text("Minify"),
leading=ft.Icon(ft.icons.ZOOM_OUT),
close_on_click=False,
style=ft.ButtonStyle(bgcolor={ft.MaterialState.HOVERED: ft.colors.PURPLE_200}),
on_click=handle_menu_item_click
)
]
)
]
),
]
)
page.add(
ft.Row([menubar]),
)
ft.app(target=main)