Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PythonPyGame中调用对象和传递变量无效错误表示变量未定义_Python_Image_Pygame_Window - Fatal编程技术网

在PythonPyGame中调用对象和传递变量无效错误表示变量未定义

在PythonPyGame中调用对象和传递变量无效错误表示变量未定义,python,image,pygame,window,Python,Image,Pygame,Window,对于Python中对象和传递是如何工作的,我有点困惑。我想创建一个对象来调用类的函数,但我似乎无法让mainWindow变量通过。我一直收到一个错误,说主窗口尚未定义 几年前,我在TKinter中编写了一个程序,所有内容都在一个主方法中,在每个函数完成后,它将调用下一个函数并传递变量。我想看看是否可以通过对象调用函数来做同样的事情 import pygame pygame.init class PreviewWindow: def __init__(self): mai

对于Python中对象和传递是如何工作的,我有点困惑。我想创建一个对象来调用类的函数,但我似乎无法让mainWindow变量通过。我一直收到一个错误,说主窗口尚未定义

几年前,我在TKinter中编写了一个程序,所有内容都在一个主方法中,在每个函数完成后,它将调用下一个函数并传递变量。我想看看是否可以通过对象调用函数来做同样的事情

import pygame
pygame.init

class PreviewWindow:
    def __init__(self):
        mainWindow = pygame.display.set_mode((800, 600))
        pygame.display.set_caption('Sprite Viewer')

    def loadImage(self, mainWindow):
        userImage = pygame.image.load('well.png')
        imageSize = userImage.get_rect()

    def drawImage(self, userImage, imageSize):
        mainWindow.blit(userImage, imageSize)
        pygame.display.flip()

previewObj = PreviewWindow
previewObj.loadImage(mainWindow)
previewObj.drawImage(mainWindow, userImage, imageSize)

我想了解如何在类中调用函数,同时能够将变量和函数传递给所述函数。

这里有几件事。首先,您要在
\uuu init\uuu
函数的范围内定义
main窗口
。这意味着不能从函数外部引用它。在开始将mainWindow传递到类的方法之前,您一直在正确使用OOP。相反,只需使用
主窗口
,该窗口已由
定义

您可以通过设置
self.mainWindow
来完成此操作<代码>自身
使属性对象特定

导入pygame
pygame.init
类预览窗口:
定义初始化(自):
#初始化主窗口
self.mainWindow=pygame.display.set_模式((800600))
pygame.display.set_标题('精灵查看器')
def loadImage(自我,图像名称):
self.userImage=pygame.image.load(imageName)
self.imageSize=userImage.get_rect()
def drawImage(自我):
#使用在_init中初始化的主窗口__
self.mainWindow.blit(self.userImage,self.imageSize)
pygame.display.flip()
PreviewBj=PreviewWindow()
previewBj.loadImage('well.png')
previewBj.drawImage()

Cool,这解决了我的主窗口问题,但现在我收到一条错误消息,说第21行(最后一行)没有定义userImage。@w2019py我按照您希望的方式重新编写了代码。现在再试一次。如果有效,请接受我的回答!