Python - 寻找有关获取鼠标位置的指导

时间:2013-12-13 12:36:13

标签: python

我正在努力想出一个小解决方案来在GUI上找到鼠标光标位置。

以下是我的代码。我确实得到鼠标位置,但只有当鼠标移动而不是单击时。事实上,我想知道我可以将此解决方案转换为仅在单击鼠标时获取X,Y坐标吗?  我在这里使用此代码遇到的另一个问题是,当我点击我的GUI挂起的屏幕中的任何地方时,我之后无法做任何事情。请告诉我有可能的解决方案吗?原谅我如果我的编码风格不符合标准。

# Globals
# ------------------

x_pad = 0
y_pad = 0

import win32api, win32con
import wx
import time
import sys

def mousePos(cord):
   win32api.SetCursorPos((x_pad + cord[0], y_pad + cord[1]))


class URL(wx.Frame):

def __init__(self, *args, **kw):
    super(URL, self).__init__(*args, **kw) 

    self.InitUI()




def InitUI(self):   

    pnl = wx.Panel(self)
    sbtn = wx.Button(pnl, label='Start', pos=(10, 30))
    cbtn = wx.Button(pnl, label='Close', pos=(10, 80))
    stdot = wx.TextCtrl(pnl, pos =(100,30),size=(150,100),     style=wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
    sys.stdout = stdot
    sys.stderr = stdot

    sbtn.Bind(wx.EVT_BUTTON, self.OnStart)
    cbtn.Bind(wx.EVT_BUTTON, self.OnClose)

    w = wx.SystemSettings.GetMetric(wx.SYS_SCREEN_X)
    h = wx.SystemSettings.GetMetric(wx.SYS_SCREEN_Y)
    APPWIDTH = 300
    APPHEIGHT = 200

    posx = w - APPWIDTH
    posy = h - APPHEIGHT


    self.SetSize((300, 150))
    self.SetTitle('Get XY Coordinates')
    self.SetPosition((posx, posy))
    self.Show(True)

def OnStart(self,e):
    while 1 == 1:
        x,y = win32api.GetCursorPos()
        x = x - x_pad
        y = y - y_pad
        print x,y
        time.sleep(2)

def OnClose(self, e):

    self.Close(True)

def main():

ex = wx.App()
URL(None)
ex.MainLoop()

 if __name__ == '__main__':
 main()  

2 个答案:

答案 0 :(得分:0)

查看PyMouse。我以前用过它取得了一些成功。 https://github.com/pepijndevos/PyMouse

答案 1 :(得分:0)

你可以使用wx自己的wx.GetMousePosition(),对我来说似乎是一种更明智的方法。