如何在 Python FMX GUI 应用程序中获取表单上的鼠标光标位置?

问题描述 投票:0回答:2

我使用适用于 Python 的

DelphiFMX GUI 库构建了一个简单的
Form。该表格附加了一个
MouseMove
事件。

我基本上想要的是当你移动鼠标时鼠标在Form上的

X
Y
坐标,然后在
Caption
Form
中显示坐标。

我尝试了下面的代码,但它不起作用:

from delphifmx import *

class frmMain(Form):
    def __init__(self, owner):
        self.Width = 800
        self.Height = 500
        self.Caption = "Mouse Position: <X, Y>"

        self.MouseMove = self.FormMouseMoveEvent

    def FormMouseMoveEvent(self, sender, e):
        self.Caption = "Mouse Position: <" + e.X + ", " + e.Y + ">"


def main():
    Application.Initialize()
    Application.Title = "My Application"
    Application.MainForm = frmMain(Application)
    Application.MainForm.Show()
    Application.Run()
    Application.MainForm.Destroy()

main()

表格的标题永远不会改变,总是只说“鼠标位置:


更新:

我认为

MouseMove
事件没有被触发。我已将代码更改为以下内容,但标题仍然没有更新:

def FormMouseMoveEvent(self, sender, e):
    self.Caption = "Just changing the caption"

python user-interface firemonkey mousemove onmousemove
2个回答
0
投票

我认为问题在于 MouseMoveEvent 返回的“X 和 Y”坐标是整数,但 self.Caption 需要一个字符串: 您可以将 FormMouseMoveEvent() 重写为:

def FormMouseMoveEvent(self, sender, e):
    self.Caption = "Mouse Position: <" + str(e.X) + ", " + str(e.Y) + ">"

希望对您有所帮助!


0
投票

我想更正您触发 MouseMove 事件的方式。它应该是

self.OnMouseMove
,类似于
self.OnClose
或任何其他事件,如
self.button1.OnClick
。此外,MouseMove 事件有 3 个参数 -
Shift
X
Y
除了
sender
本身。
X
Y
在Delphi中是
Single
类型,需要转为
String
类型

但是当

OnMouseMove
事件被触发时,EventHander调用Delphi中的
TMouseMoveEvent
类型,还没有被包裹。我们将计划尽快包装它并回复您。

© www.soinside.com 2019 - 2024. All rights reserved.