1

我一直在获取鼠标的位置。我想在鼠标位置显示 Fyne 弹出菜单,但无法弄清楚。

这是我使用弹出窗口的方式:

menuItem1 := fyne.NewMenuItem("A", nil)
menuItem2 := fyne.NewMenuItem("B", nil)
menuItem3 := fyne.NewMenuItem("C", nil)
menu := fyne.NewMenu("File", menuItem1, menuItem2, menuItem3)

popUpMenu := widget.NewPopUpMenu(menu, window.Canvas())

popUpMenu.ShowAtPosition(*Expect mouse position here*)
popUpMenu.Show()

我希望将鼠标位置作为 Fyne Position 放在提到的位置。但我不知道我可以从哪里获得鼠标/光标位置。

这样,弹出窗口总是卡在应用程序的左上角。

4

1 回答 1

3

PointEvent传递给实现接口以进行交互的方法。ButtonOnTapped隐藏了这些详细信息,因为它们通常不需要。

正如一些评论中所建议的那样,您应该像 fyne_demo 中的按钮一样扩展您想要对此做出响应的小部件:https ://github.com/fyne-io/fyne/blob/c29a0624ed96ba1b8f45d903b6941824d50e0502/cmd/fyne_demo/tutorials /widget.go#L359

落实Tapped(e *fyne.PointEvent)是关键。

于 2021-02-06T21:45:24.047 回答