天天看点

python中object has no attribute_Python导入和“object has no attribute”与Q

通过对堆栈溢出和其他站点的研究,我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())