当我使用插槽时,我收到一个错误“<builtin function connectSlotsByName>返回了一个带有错误集的结果”__

2024-09-30 16:33:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用pyqt5制作gui。当我没有将varaibales放在__slots__下时,代码可以正常工作,但是一旦我将它们放进去,就会出现一个错误

“(内置函数connectSlotsByName)返回了一个带有错误集的结果”

在上面的错误上面写着

“'MainWindow'对象没有属性'z'”

下面是我的部分代码(有点长)。我甚至不确定__slots__是否是个问题。因为当我从'fName'到'has_data'时,它工作得很好,但当我在'x'下添加内容时,它就开始给我这个错误

class MainWindow(QDialog):
__slots__ = (
    # find_file_Callback
    'fName',
    'cubefilename',
    'ROI',
    'ROIcount',
    'has_data',
    'x',
    'x_end',
    'y',
    'y_end',
    'z',
    'ptflag',
    'rgflag',
    'rgflagROI',
    'intens'
    )

def __init__(self):
    super(MainWindow,self).__init__()
    loadUi("ptype1.ui",self)
    self.find_file.clicked.connect(self.find_file_Callback)
    self.micrometer.setChecked(True)
    self.start_cube.clicked.connect(self.start_cube_Callback)
    
    self.fName = ""
    self.cubefilename = ""
    self.ROI = 0
    self.ROIcount = 0
    self.has_data = 0
    self.x = 0
    self.x_end = 0
    self.y = 0
    self.y_end = 0
    self.z = 0
    self.ptflag = False
    self.rgflag = False
    self.rgflagROI = False
    self.intens = 0

    
def start_cube_Callback(self):
    self.cubefilename = self.fName[0]
    filename = self.cubefilename
    print("Working to read datacube")
    fileID = open (filename)
    data = np.fromfile(fileID, dtype = np.float32)
    x=int(data[0])
    y=int(data[1])
    z=int(data[2])
    end = len(data)
    imgZ = data[end-z:end]
    img =  data[3:x*y*z +3]
    del data
    img = img.reshape(z,x,y, order = 'F') 
    img = img.transpose(2, 1, 0) 
    img = np.flip(img,0)
    imgX = np.arange(37.5, 75*x+37.5, 75)
    imgY = np.arange(75, 150*y+75, 150)
    fileID.close()
    
    print("Working to display data\n")
    
    scalefact = 1e3

    self.x = abs((imgX-imgX[0])/scalefact)
    xm, xn = 1, len(imgX) 
    if xm > xn:
        self.x = self.x.conj().T 
    self.x_end = self.x[len(self.x) - 1]
    self.y = abs((imgY-imgY[0])/scalefact)
    ym, yn = 1, len(imgY)
    if ym < yn:
        self.y = self.y.conj().T
    self.y_end = self.y[len(self.y) - 1]
    self.z = imgZ

Tags: selfimgdatalen错误npcallbackfname