python - 满足条件后如何更新pygame窗口显示?
问题描述
我有一些 pygame 窗口的代码:
while True:
try:
gameDisplay.fill(white)
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
except Exception:
pass
a=button("Enter",100,150,100,50,darkgreen,green,"play")
button("Exit",450,150,100,50,darkred,red,"quit")
for event in pygame.event.get() :
if event.type == pygame.QUIT :
pygame.quit()
pygame.display.update()
#if a == False:
#pygame.quit()
它显示 2 个可以单击的按钮(由按钮功能创建)。单击绿色按钮时,会出现一个 tkinter 输入框。在用户输入必要的东西并确认输入有效后,函数返回状态(如果错误的用户正确输入了详细信息)。发生这种情况后,我想更改窗口显示的内容并显示完全不同的内容。“a”(状态)的最初目的是在验证输入后关闭窗口并打开一个新窗口,但是经过研究我发现你不能在同一个脚本中打开两个窗口。
我试过这个:
if a == False:
gameDisplay.fill(white)
gameDisplay.blit(image1, (50, 0))
gameDisplay.blit(image2, (50, 100))
gameDisplay.blit(image3, (50, 200))
gameDisplay.blit(image4, (50, 300))
gameDisplay.blit(image5, (120, 100))
gameDisplay.blit(image6, (120, 200))
gameDisplay.blit(image7, (130, 260))
gameDisplay.blit(image8, (130, 290))
gameDisplay.blit(image9, (130, 320))
gameDisplay.blit(text, (0,0))
gameDisplay.blit(text2, (200,385))
gameDisplay.blit(text3, (200,369))
gameDisplay.blit(text4, (300,25))
gameDisplay.blit(text5, (300,100))
gameDisplay.blit(image16, (300, 45))
gameDisplay.blit(image17, (350, 45))
gameDisplay.blit(text6, (300, 170))
gameDisplay.blit(image10, (300, 120))
gameDisplay.blit(image11, (350, 120))
gameDisplay.blit(image12, (400, 120))
gameDisplay.blit(image13, (450, 120))
gameDisplay.blit(image14, (500, 120))
gameDisplay.blit(image15, (550, 120))
gameDisplay.blit(image19, (300, 190))
gameDisplay.blit(image20, (350, 190))
pygame.display.update()
并将其放在第二个按钮功能之后但不起作用。有任何想法吗?
解决方案
对于 Pygame,尽量保持在一个循环中。根据情况,显示按钮或玩游戏。
试试这个代码:
a = True # show buttons
while True:
try:
gameDisplay.fill(white)
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
except Exception:
pass
if a == True: # keep showing buttons until user clicks one
a=button("Enter",100,150,100,50,darkgreen,green,"play")
button("Exit",450,150,100,50,darkred,red,"quit")
if a == False: # run game
gameDisplay.fill(white)
gameDisplay.blit(image1, (50, 0))
...........
gameDisplay.blit(image19, (300, 190))
gameDisplay.blit(image20, (350, 190))
for event in pygame.event.get() :
if event.type == pygame.QUIT :
pygame.quit()
pygame.display.update()
#if a == False:
#pygame.quit()
pygame.display.update()
推荐阅读
- angular - 单击复选框后如何更改标题
- c - 在头文件中打开用于记录宏的文件指针
- javascript - 使用 JS/Lodash 迭代和改变未确定深度的多维对象数组
- ios - UICollectionViewCell 中的 AVPlayer 播放声音但不显示视频
- winapi - 读取键盘状态 Win32 应用程序
- html - Bootstrap 4.0 卡片内的按钮对齐方式
- c++ - 失焦时 SDL2 窗口不起作用
- java - 使用 Spring Boot 的 Jersey 多部分配置
- r - 如何从 R 中各个子文件夹中包含的文件中堆叠各个栅格图层?
- c# - Bot Framework 中的高级 FormFlow - 通过代码设置模板