Python 属性错误:';计划';对象没有属性';文件';

Python 属性错误:';计划';对象没有属性';文件';,python,pyqt5,Python,Pyqt5,我想从函数Main()中放入img1文件,但我得到了 class Program: def Main(self): fname = QFileDialog.getOpenFileName() filepath = str(fname[0]) fileObject = filepath.split('/') file = fileObject[len(fileObject) - 1] def image(self,

我想从函数
Main()
中放入
img1
文件,但我得到了

class Program:
    def Main(self):
        fname = QFileDialog.getOpenFileName()
        filepath = str(fname[0])
        fileObject = filepath.split('/')
        file = fileObject[len(fileObject) - 1]

    def image(self, Main):
        img1 = cv2.imread(Main.file())

据我所知,您的代码中有一些奇怪的东西:

  • 我不知道您是如何调用
    image
    方法的,但它当前接收到一个
    Main
    值。如果我错了,请纠正我,因为这纯粹是推测,但我认为您想调用
    程序的
    Main
    方法。如果是这样的话,你就不是这样做的。您可以将其重构为:
  • class程序:
    def主(自):
    fname=QFileDialog.getOpenFileName()
    filepath=str(fname[0])
    fileObject=filepath.split(“/”)
    file=fileObject[len(fileObject)-1]
    #从方法签名中删除Main,因为它是程序中的一个方法
    def图像(自我):
    #从self对象调用Main
    img1=cv2.imread(self.Main.file())
    
  • 您正在调用
    image
    方法中的
    self.Main.file()
    。由于
    Main
    是一个方法,并且它没有另一个名为
    file
    的方法,因此它将抛出
    AttributeError
    。另一种纯粹的推测,但我认为您希望访问
    Main
    方法中的变量
    文件。如果是这样的话,你就不是这样做的。不能访问另一个方法中的变量,但可以访问该方法返回的值。您可以重构
    Main
    以返回所需的文件(并将其重命名为适当的名称,例如
    get\u file
    ):
  • class程序:
    #将Main重命名为更具描述性的名称
    def get_文件(自身):
    fname=QFileDialog.getOpenFileName()
    filepath=str(fname[0])
    fileObject=filepath.split(“/”)
    #返回它,以便我们可以在它之外访问此值
    返回fileObject[len(fileObject)-1]
    def图像(自我):
    #访问get_文件返回的文件
    #因为这是一个程序方法,所以使用self对象调用它
    file=self.get_file()
    #使用返回的值
    img1=cv2.imread(文件)
    
  • 一些小的改进:
  • class程序:
    #将Main重命名为更具描述性的名称
    def get_文件(自身):
    fname=QFileDialog.getOpenFileName()
    filepath=str(fname[0])
    fileObject=filepath.split(“/”)
    #可以删除使用-1作为最后一个值的索引
    返回文件对象[-1]
    def图像(自我):
    file=self.get_file()
    #可能您想返回下面的变量
    返回cv2.imread(文件)
    
    完整代码:

    class程序:
    def get_文件(自身):
    fname=QFileDialog.getOpenFileName()
    filepath=str(fname[0])
    fileObject=filepath.split(“/”)
    返回文件对象[-1]
    def图像(自我):
    file=self.get_file()
    返回cv2.imread(文件)
    
    您是否收到了错误信息?始终将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图,也不是指向外部门户的链接)进行讨论(不是评论)。还有其他有用的信息。我想
    i-ui.Image\u to\u hide()
    应该是
    i=ui.Image\u to\u hide()
    i fix
    i-ui.Image\u to\u hide()“final_test.py”,第127行,在Encrypt img1=cv2.imread(u.pixmap())AttributeError中:“NoneType”对象没有属性“pixmap”
    @GaGoLL请提供一个@Eylanesc我更改并编辑代码
    Traceback (most recent call last):
      File "test.py", line 7, in image
        img1 = cv2.imread(Main.file())
    AttributeError: 'Program' object has no attribute 'file'