天天看點

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())