2016-05-06 20 views
0

Ich mache eine GUI für TouchscreenPython qt Designer Maus-Tracking-Cursor-Position

Taster in diesem GUI sollte Signal erzeugen, wenn sich der Mauszeiger auf den Tasten

Aber qt-Designer ist nicht über diese Art von Signal (ich habe versucht, bereits freigegeben, geklickt, gepresst)

Deshalb denke ich ständig Cursor-Position-Tracking kann

jedoch eine Lösung sein, ich habe keine Ahnung, wie Maus zu implementieren Tracking (wie mousemove) in der Code generiert durch qt Designer und pyuic

Wenn ich die Maus-Tracking-Code von anderen Beispielen verwenden, ist es nicht ...

Bitte helfen Sie mir

Hier funktioniert der Code, was wesentliche Teile enthält nur

from PyQt4 import QtCore, QtGui 
import sys 


try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    def _fromUtf8(s): 
     return s 

try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig) 



class Ui_MainWindow(object): 

    def mouseMoveEvent(self, event): 
     current = QtGui.QCursor.pos() 
     x = current.x() 
     y = current.y() 
     print("Mouse %d %d" % (x,y)) 

    def setupUi(self, MainWindow): 
     MainWindow.setObjectName(_fromUtf8("MainWindow")) 
     MainWindow.resize(1920, 720) 






import resources_rc 

if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    MainWindow = QtGui.QMainWindow() 
    ui = Ui_MainWindow() 
    ui.setupUi(MainWindow) 
    MainWindow.setMouseTracking(True) 
    MainWindow.show() 
    sys.exit(app.exec_()) 
+0

Betrachten wir ein event anstelle der Umsetzung, da Maus-Tracking ein sehr Schwergewicht Satz ist, und Sie setzen nie 'Widget-> setMouseTracking (true);' Natürlich ist Ihre Mausverfolgung deaktiviert. –

+0

Ich habe MainWindow.setMouseTracking (True) und self.centralwidget = QtGui.QWidget (MainWindow), self.centralwidget.setMouseTracking (True) ebenfalls hinzugefügt, aber QCursor antwortet nicht –

Antwort

1

löste ich dieses Problem

ich von https://github.com/bkach/earthquakeviz/blob/master/pyqt.py einen Code verwendet

machen eine weitere Klasse arbeitet

komplette Code

from PyQt4 import QtCore, QtGui 
import sys 


try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    def _fromUtf8(s): 
     return s 

try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig) 


class Ui_MainWindow(object): 

    def setupUi(self, MainWindow): 
     MainWindow.setObjectName(_fromUtf8("MainWindow")) 
     MainWindow.resize(1920, 720) 
     MainWindow.setMouseTracking(True) 
     self.centralwidget = QtGui.QWidget(MainWindow) 
     self.centralwidget.setMouseTracking(True) 
     self.centralwidget.setObjectName("centralwidget") 
     MainWindow.setCentralWidget(self.centralwidget) 




class MainWIndowTest(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     QtGui.QMainWindow.__init__(self) 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 
     self.ui.centralwidget.installEventFilter(self) 

    def eventFilter(self, object, event): 
     if (event.type() == QtCore.QEvent.MouseMove): 
      pos = event.pos() 
      print("%d, %d" % (pos.x(), pos.y())) 

     return QtGui.QWidget.eventFilter(self, object, event) 

    def mouseMoveEvent(self, event): 
     print("Moved") 




import resources_rc 

if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    win = MainWIndowTest() 
    win.show() 
    sys.exit(app.exec_())