Python Pygame窗口不显示任何内容,当我退出程序时,它会在一瞬间显示我的程序,然后关闭
我制作了一个非常简单的Pygame程序,其中使用了混音器。我想创建一个带有背景图像和按钮的屏幕。该按钮显示暂停。但是当我运行程序时,pygame窗口(输出)显示一个黑屏。当我输入e作为退出(正如你在代码中看到的,在主循环中,我添加了字母的规格,我可以按它来关闭(e)、恢复(r)或暂停(p)),它会闪烁我的程序一秒钟(我很确定它显示的时间少于一秒钟),然后退出。 我还注意到,一旦我真的调试了它,它就运行了,但pygame窗口没有响应,所以我不得不关闭并再次运行,结果屏幕再次空白。 这是我的代码:Python Pygame窗口不显示任何内容,当我退出程序时,它会在一瞬间显示我的程序,然后关闭,python,debugging,pygame,Python,Debugging,Pygame,我制作了一个非常简单的Pygame程序,其中使用了混音器。我想创建一个带有背景图像和按钮的屏幕。该按钮显示暂停。但是当我运行程序时,pygame窗口(输出)显示一个黑屏。当我输入e作为退出(正如你在代码中看到的,在主循环中,我添加了字母的规格,我可以按它来关闭(e)、恢复(r)或暂停(p)),它会闪烁我的程序一秒钟(我很确定它显示的时间少于一秒钟),然后退出。 我还注意到,一旦我真的调试了它,它就运行了,但pygame窗口没有响应,所以我不得不关闭并再次运行,结果屏幕再次空白。 这是我的代码:
import pygame
import sys
from pygame import mixer
pygame.init()
mixer.init()
run = True
win = pygame.display.set_mode((690, 385))
pygame.display.set_caption("The Rhyme Library")
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREY = (30, 30, 30)
BGIMG = pygame.image.load('C:/Users/Vinod/Desktop/Pygame Learn/musicpy.jpg')
smallfont = pygame.font.SysFont('Corbel',35)
win.blit(BGIMG, (0,0))
def button(msg, x, y, w, h, ic,ac, action=None):
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
smallfont = pygame.font.SysFont('Corbel',35)
text = smallfont.render('Pause' , True , WHITE, ((x+(w/2)), (y+(h/2))))
if x+w > mouse[0] > x and y+h > mouse[1] > y:
pygame.draw.rect(win, ac, (x, y, w, h)) # creates a rect object
if click[0] == 1 and action != None:
if action == "pause":
mixer.music.pause()
else:
pygame.draw.rect(win, ic, (x, y, w, h)) # creates a rect object
#win.blit(text)
#text1 = smallfont.render('Resume' , True , WHITE)
#pygame.draw.rect(win, BLACK,(x, 160, 60, w)) # creates a rect object
#pygame.draw.rect(win, GREY, (x, y, w, 60)) # creates a rect object
#text2 = smallfont.render('Resume' , True , WHITE)
#button2 = pygame.Rect(win, text2, (345, 220, 60, 1h)) # creates a rect object
button("Pause", 345, 100, 150, 60, GREY ,BLACK, "pause")
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
run = False
sys.exit()
#text2 = smallfont.render('Resume' , True , WHITE)
#button2 = pygame.Rect(win, text2, (345, 220, 60, 150)) # creates a rect object
#MAINLOOP
mixer.music.load("C:/Users/Vinod/Desktop/Pygame Learn/twinkle.mp3")
mixer.music.set_volume(0.7)
mixer.music.play()
while True:
print("Thanks for using the mixer created by Nishita Thakur.Kindly follow these guidlines.")
print("Press 'p' to pause, 'r' to resume")
print("Press 'e' to exit the program")
query=input("")
if query=='p':
mixer.music.pause()
elif query=='r':
mixer.music.unpause()
elif query=='e':
mixer.music.stop()
break
else:
print("Invalid Input Entered")
pygame.display.update()
我试图在Stackoverflow中找到答案,但没有人有这个问题,所以没有这样的问题。我希望它显示我的程序,我已经尝试了好几次,但我找不到它的错误。我会感谢任何能帮助我的人,因为我对pygame还很陌生。
提前感谢:)您必须将事件循环放在主应用程序循环中。不要使用
输入
。您必须通过键盘事件获得按键(pygame.KEYDOWN
,pygame.keydup
请参阅):
print(“感谢您使用Nishita Thakur创建的混合器。请遵循这些指南。”)
打印(“按“p”暂停,按“r”继续”)
打印(“按“e”退出程序”)
运行=真
运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K\p:
mixer.music.pause()
elif event.key==pygame.K\u r:
混音器。音乐。取消暂停()
elif event.key==pygame.K_e:
mixer.music.stop()
运行=错误
其他:
打印(“输入无效”)
pygame.quit()
sys.exit()
您必须将事件循环放在主应用程序循环中,不要使用输入。您必须通过键盘事件(pygame.KEYDOWN
,pygame.keydup
请参见)获取按键。谢谢Rabbi76,请稍有疑问,我应该在While循环或main循环中添加事件循环吗?