標準のPythonライブラリを使用して、カーソル位置をピクセル値で取得することは可能ですか?
ポップアップメニューを適切に配置できません:
pos = self.text.GetLastPosition()
start, end = self.text.PositionToXY(pos)
self.text.PopupMenuXY(self.popupmenu,start, end)
ありがとう!
プラットフォームに依存するため、標準の python ライブラリでは使用できません。Windows では、winapi を使用できます。
import win32api
x, y = win32api.GetCursorPos()
また、Linux では xlib を使用できます。
from Xlib.display import Display
display = Display()
coord = display.screen().root.query_pointer()._data
x = coord["root_x"]
y = coord["root_y"]
wxPython でマウスの位置を取得するには、次を使用できます。
pos = wx.GetMousePosition() # in screen coordinates
これにより、画面座標の XY 位置がタプルとして得られます。ウィジェットに相対的な位置が必要な場合は、ウィジェットで ScreenToClient() を呼び出して、クライアント座標に変換する必要があります。
pos = self.textctrl.ScreenToClient(pos) # relative to textctrl
現在のマウス位置にポップアップ メニューを表示したいだけの場合は、これをスキップして、位置を指定せずに PopupMenu() を呼び出すことができます。
self.PopupMenu(self.popupmenu) # pop up menu at mouse position