Python 使用Pygame的两个过程之间的接口
祝大家新年快乐 我对Pygame有一个小问题,我想知道你是否能帮我解决它 事情是这样的:我的练习包含在一个我们需要用pygame复制的界面中,并将其指定为一个过程 接下来,我们需要在另一个过程中使用创建的接口,而不在第二个过程中将其作为参数 问题是,将接口指定为全局接口根本不起作用,我发现使其起作用的唯一方法是从第一个过程返回接口,而第一个过程不再是过程,因此将其用作第二个过程的参数 基本上,这不是我练习中所要求的,所以我应该找到另一种方法 我的代码是这样的:Python 使用Pygame的两个过程之间的接口,python,pygame,Python,Pygame,祝大家新年快乐 我对Pygame有一个小问题,我想知道你是否能帮我解决它 事情是这样的:我的练习包含在一个我们需要用pygame复制的界面中,并将其指定为一个过程 接下来,我们需要在另一个过程中使用创建的接口,而不在第二个过程中将其作为参数 问题是,将接口指定为全局接口根本不起作用,我发现使其起作用的唯一方法是从第一个过程返回接口,而第一个过程不再是过程,因此将其用作第二个过程的参数 基本上,这不是我练习中所要求的,所以我应该找到另一种方法 我的代码是这样的: def creating():
def creating():
a = 0
pygame.init()
red = (255,0,0)
mySurface = pygame.display.set_mode((400,250))
while a == 0:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.draw.rect(mySurface,red,(35,23,48,64),0)
pygame.display.update()
def otherprocedure():
a = 0
blue = (0,0,255)
while a == 0:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.draw.rect(mySurface,blue,(100,100,20,20),0) #I want this to appear on mySurface but it does not even if mySurface is a global variable
pygame.display.update()
creating()
otherprocedure()
提前感谢您的帮助。在第一个函数中收到退出事件时,您将使用sys.exit退出程序,因此不会绘制蓝色矩形。按照现在的代码方式,mySurface是否为全局函数并不重要,因为第二个函数从未运行过。要使其工作,您需要将第一个事件循环的行为更改为在不退出的情况下中断。然后,您可以解决将曲面从一个函数传递到另一个函数的问题,例如,将其设置为全局变量 试试这个:
def creating():
global mySurface # make mySurface a global variable
a = 0
pygame.init()
red = (255,0,0)
mySurface = pygame.display.set_mode((400,250))
while a == 0:
for event in pygame.event.get():
if event.type == QUIT:
a = 1 # this will stop the loop without ending the program
pygame.draw.rect(mySurface,red,(35,23,48,64),0)
pygame.display.update()
def otherprocedure():
a = 0
blue = (0,0,255)
while a == 0:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.draw.rect(mySurface,blue,(100,100,20,20),0) # this will just work now
pygame.display.update()
creating()
otherprocedure()
如果在第二个函数之后还有更多的东西要运行,那么您可能也希望从那里删除pygame.quit和sys.exit调用,并让它将控制权返回到调用代码,您可能希望在某个时候调用pygame.quit。mySurface就是您所说的界面吗?将其设置为全局变量,并在第一个函数中为其赋值,然后在第二个函数中引用其值,应该可以正常工作。我也不确定你所说的将其指定为一个过程是什么意思。是的。我上一次试过,把:global mySurface放在第一个函数中。但是我应该在第二个函数中放什么呢?我什么也没放进去,也没用。我认为,一旦它在代码中的任何地方被引用,我们就不必在其他地方引用它了?您还需要在第二个函数中添加一个全局mySurface。如果您在模块级的两个函数之外都有一个mySurface=None之类的东西,那么这就没有必要了。仍然不起作用。我尝试了两种解决方案。。。看起来第二个函数只能使用创建的接口,如果它是一个参数…这两个函数在单独的.py文件中吗?谢谢!我不认为sys.exit是这样工作的,所以现在,你让我的大脑明白了:问题解决了!