Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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
Python 如何防止pygame中屏幕不断从一张图片切换到另一张?_Python_Python 3.x_Pygame - Fatal编程技术网

Python 如何防止pygame中屏幕不断从一张图片切换到另一张?

Python 如何防止pygame中屏幕不断从一张图片切换到另一张?,python,python-3.x,pygame,Python,Python 3.x,Pygame,我正在使用PyGame创建一个小游戏,在从一个屏幕切换到另一个屏幕时遇到问题。基本上,我尝试在第一个屏幕上有三个按钮-当单击一个按钮(选项)时,程序应该切换图像并显示另一个按钮(控件)。出现的问题是,程序不断地从一张图片快速切换到另一张图片,而不是停留在某一张图片上 class主菜单(): 定义初始化(自): self.title=pg.display.set_标题('Genesis') self.screen=pg.display.set_模式((WIN_宽度、WIN_高度)) self.sc

我正在使用PyGame创建一个小游戏,在从一个屏幕切换到另一个屏幕时遇到问题。基本上,我尝试在第一个屏幕上有三个按钮-当单击一个按钮(
选项
)时,程序应该切换图像并显示另一个按钮(
控件
)。出现的问题是,程序不断地从一张图片快速切换到另一张图片,而不是停留在某一张图片上

class主菜单():
定义初始化(自):
self.title=pg.display.set_标题('Genesis')
self.screen=pg.display.set_模式((WIN_宽度、WIN_高度))
self.screen\u rect=self.screen.get\u rect()
self.clock=pg.time.clock()
self.running=True
self.state=“菜单”
self.button1=按钮(self.screen,40020020075,红色,浅红色,“加载保存文件”,“菜单”)
self.button2=按钮(self.screen,400,300,200,75,绿色,浅绿色,“新建保存文件”,“菜单”)
self.button3=按钮(self.screen,400,400,200,75,蓝色,浅蓝色,“选项”,“菜单”)
self.button4=按钮(self.screen,400、250、200、75、红色、浅红色,“控件”、“选项”)
self.text\u image,self.text\u rect=self.draw\u text(“破碎的起源”,self.screen\u rect.centerx,self.screen\u rect.bottom-575),TITLE\u字体大小,白色,菜单字体)
def运行(自):
自运行时:
如果self.state==“菜单”:
self.handle_事件()
self.draw()
elif self.state==“选项”:
self.handle_事件()
self.draw()
self.options()
自我时钟滴答声(FPS)
def处理_事件(自):
对于pg.event.get()中的事件:
如果event.type==pg.QUIT:
第页退出
退出()
self.button1.处理事件(事件)
self.button2.处理事件(事件)
self.button3.处理事件(事件)
self.button4.处理事件(事件)
self.button_click()
def按钮_单击(自身):
如果self.button1.clicked==True:
self.file_check()
elif self.button2.clicked==真:
通过
elif self.button3.clicked==真:
self.options()
elif self.button4.clicked==真:
自我控制()
def牵引(自):
显示.blit(主菜单(0,0))
如果self.state==“菜单”:
self.button1.draw()
self.button2.draw()
self.button3.draw()
其他:
self.button4.draw()
self.screen.blit(self.text\u image,self.text\u rect)
pg.display.update()
def绘图文本(自身、文字、位置、大小、颜色、字体名称):
font=pg.font.SysFont(字体名称、大小)
image=font.render(字、假、颜色)
rect=image.get_rect()
rect.centerx=位置[0]
rect.top=位置[1]
返回图像
def选项(自):
self.state=“选项”
打印(自我状态)
self.button3.clicked=False
显示.blit(选项_bg,(0,0))
pg.display.update()
def控制(自):
打印(“控制”)
def文件检查(自检):
打印(“文件检查”)
通过
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
第init页()
游戏=主菜单()
game.run()
我有一个额外的
按钮
类,它为创建具有以下参数的按钮奠定了基础:表面、宽度、高度、x、y、颜色、悬停颜色、文本、状态

我尝试过转换代码行,更改状态,但仍然无法找到解决此问题的方法。
我希望能解决这个问题,这样我就可以创建多个带有按钮的屏幕来浏览菜单。

对不起,该代码的控制流是无法验证的。此外,还不清楚你所说的“从一张图片快速切换到另一张图片”是什么意思。问题可能出在按钮的事件处理上(
self.button1.handle\u events
)。“单击”状态(
self.button1.clicked
)是否持续?对于控制流,我深表歉意,这是我需要改进的地方。我想说的是,在程序关闭之前,屏幕一直在相互交替。问题与我的
run
函数有关,因为缩进和其他逻辑错误不正确。这个问题现在已经解决了。谢谢你的帮助。:)