我正在努力想出一个小解决方案来在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()
答案 0 :(得分:0)
查看PyMouse。我以前用过它取得了一些成功。 https://github.com/pepijndevos/PyMouse
答案 1 :(得分:0)
你可以使用wx自己的wx.GetMousePosition()
,对我来说似乎是一种更明智的方法。