Я пытаюсь найти небольшое решение, чтобы найти положение курсора мыши в графическом интерфейсе.Python - Ищете руководство по получению положения мыши
Ниже приведен мой код. Я получаю позицию мыши, но только когда мышь перемещается и не нажимается. На самом деле, я хочу знать, могу ли я превратить это решение, чтобы получить координаты X, Y только при нажатии мыши? Еще одна проблема, с которой я сталкиваюсь здесь с этим кодом - это момент, когда я нажимаю в любом месте экрана, мой графический интерфейс висит, и после этого я ничего не могу сделать. Пожалуйста, дайте мне знать, есть ли возможное решение для этого? Прости меня, если мой стиль кодирования не соответствует стандартам.
# 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()
Я заменил x, y = win32api.GetCursorPos() с x, y = wx.GetMousePoistion, но он просто стал заменой. Мое приложение застревает, когда я нажимаю в любом месте экрана. Вы думаете, что я должен сделать что-то еще? – just10minutes