2013-12-13 3 views
0

Я пытаюсь найти небольшое решение, чтобы найти положение курсора мыши в графическом интерфейсе.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() 

ответ

0

Вы можете использовать wx's wx.GetMousePosition() для этого, кажется более разумным подходом ко мне.

+0

Я заменил x, y = win32api.GetCursorPos() с x, y = wx.GetMousePoistion, но он просто стал заменой. Мое приложение застревает, когда я нажимаю в любом месте экрана. Вы думаете, что я должен сделать что-то еще? – just10minutes

Смежные вопросы