通过对堆栈溢出和其他站点的研究,我99%确定我遇到的问题是由于错误的导入。下面是我用来响应一些鼠标事件的QLabel子类:import Qt
import sys
class ASMovableLabel(Qt.QLabel):
def mouseReleaseEvent(self, event):
button = event.button()
if button == 1:
print ('LEFT CLICK')
def mousePressEvent(self, event):
button = event.button()
if button == 1:
print ('LEFT CLICK')
elif button == 3:
print ('RIGHT CLICK')
self.setLayout()
def mouseMoveEvent(self, event):
print ("you moved the mouse: %f, %f", event.x, event.y)
self.frameRect.setTopLeft(Qt.QPoint(event.x, event.y))
当mouseMoveEvent被触发时,我得到以下错误:
^{pr2}$
我见过的这种类型的错误的其他解决方案都是围绕名称空间的,所以我需要或不需要在所有Qt类之前包括Qt.,但是这个错误在Qt对象中要远得多。请指出我的错误!在
我也尝试过:from PyQt4 import Qt
它给出了同样的错误
更新:根据Messa的评论,我做了一些修改:import Qt
import sys
class ASMovableLabel(Qt.QLabel):
def mouseReleaseEvent(self, event):
button = event.button()
if button == 1:
print ('LEFT CLICK')
def mousePressEvent(self, event):
button = event.button()
if button == 1:
print ('LEFT CLICK')
elif button == 3:
print ('RIGHT CLICK')
self.setLayout() #this won't set to nil
def mouseMoveEvent(self, event):
self.frameRect().setTopLeft(Qt.QPoint(event.globalX(), event.globalY()))
因此,在Python中,点语法似乎是函数调用,并且需要包括后面的“()”。这不包括self(即self().something())