こちらの続きです。
コントロールにコンテキストメニューを追加したい1 - C#ATIA
コンテキストメニュー代わりにアラートを表示させてみました。
import flet as ft def main(page: ft.Page): def close_dlg(e): dlg_modal.open = False page.update() dlg_modal = ft.AlertDialog( actions=[ ft.Column( controls = [ ft.TextButton("愛してる?", on_click=close_dlg), ft.TextButton("愛してない?", on_click=close_dlg), ], expand = True, ), ], actions_alignment=ft.MainAxisAlignment.CENTER, shape = ft.RoundedRectangleBorder( radius = 10, ), ) def on_context_menu(e: ft.TapEvent): e.page.dialog = dlg_modal dlg_modal.open = True e.page.update() drag = ft.Draggable( group = "test", content = ft.Text( "右クリックして!", size = 20, ), ) gd = ft.GestureDetector( mouse_cursor = ft.MouseCursor.CONTEXT_MENU, on_secondary_tap_up = on_context_menu, left = 100, top = 100, content = drag, ) # page.add(gd) <-これNG page.add(ft.Stack([gd])) ft.app(target=main)
見えにくいのですが、こんな感じです。
中心に表示されてます。こんなの愛せないです。
イベントハンドラで右クリックした際の座標は取得出来る事には
前から気が付いていました。
アラートの表示位置を移動させれば良いかな?と思っていたのですが、
ダメでした。そのようなプロパティが有りません。
他のアラート類も上か下の表示です・・。
Issuesやサンプル探しても、コンテキストメニューっぽいものが見つからず。
ページ重ねて表示とか出来るのかな?