[PyQt] why is mouseMoveEvent not reached in QMainWindow object
Christopher M. Nahler
christopher.nahler at papermodels.at
Wed Apr 28 14:37:15 BST 2010
I am new to PyQt4 and trying to find my way ... here n the first example
code I am successfully trying to display the mouse coordinates in a
little app using a QWidget object as main window. Below is another try
where I would like to display the mouse coordinates in the status bar of
a QMainWindow object. Somehow I cannot reach the mouseMoveEvent
function. What am I doing wrong?
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MainWindow(QWidget):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setMouseTracking(True)
self.text = QString()
self.resize(400, 200)
self.move(100, 100)
self.setWindowTitle("MouseMoveTest")
self.update()
def paintEvent(self, event):
painter = QPainter(self)
painter.drawText(self.rect(), Qt.AlignCenter, self.text)
def mouseMoveEvent(self, event):
curPos = QCursor.pos()
self.text = " mouse @ %d / %d " % (curPos.x(), curPos.y())
self.update()
app = QApplication(sys.argv)
form = MainWindow()
form.show()
app.exec_()
--------------------------------------
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
SCREEN_BORDER = 100
class myLabel(QLabel):
def __init__(self, parent=None):
super(myLabel, self).__init__(parent)
curPos = QCursor.pos()
self.setText(" mouse @ %d / %d " % (curPos.x(), curPos.y()))
self.update()
def paintEvent(self, event):
painter = QPainter(self)
painter.drawText(self.rect(), Qt.AlignCenter, self.text())
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.imageLabel = QLabel()
self.setCentralWidget(self.imageLabel)
# statusbar
status = self.statusBar()
status.setSizeGripEnabled(False)
# add label for mouse coords in statusbar
self.coordsLabel = myLabel()
status.addPermanentWidget(self.coordsLabel)
status.showMessage("Ready", 5000)
def mouseMoveEvent(self, event):
curPos = QCursor.pos()
print curPos
self.coordsLabel.setText(" mouse @ %d / %d " % (curPos.x(),
curPos.y()))
self.coordsLabel.update()
super(MainWindow, self).mouseMoveEvent(event)
if __name__ == "__main__":
import sys
# setup application object
app = QApplication(sys.argv)
# create (parent) main window
mainWindow = MainWindow()
rect = QApplication.desktop().availableGeometry()
mainWindow.setGeometry(rect.x() + SCREEN_BORDER,
rect.y() + SCREEN_BORDER,
rect.width() - 2 * SCREEN_BORDER,
rect.height() - 2 * SCREEN_BORDER)
mainWindow.setMinimumSize(900, 700)
mainWindow.setWindowIcon(QIcon("D:\UDaten\pyqt\chap12\DesignerTest.bmp"))
mainWindow.setWindowTitle("DesignerTest")
mainWindow.show()
# run application object
sys.exit(app.exec_())
More information about the PyQt
mailing list