Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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_Debugging_Pygame - Fatal编程技术网

Python Pygame窗口不显示任何内容,当我退出程序时,它会在一瞬间显示我的程序,然后关闭

Python Pygame窗口不显示任何内容,当我退出程序时,它会在一瞬间显示我的程序,然后关闭,python,debugging,pygame,Python,Debugging,Pygame,我制作了一个非常简单的Pygame程序,其中使用了混音器。我想创建一个带有背景图像和按钮的屏幕。该按钮显示暂停。但是当我运行程序时,pygame窗口(输出)显示一个黑屏。当我输入e作为退出(正如你在代码中看到的,在主循环中,我添加了字母的规格,我可以按它来关闭(e)、恢复(r)或暂停(p)),它会闪烁我的程序一秒钟(我很确定它显示的时间少于一秒钟),然后退出。 我还注意到,一旦我真的调试了它,它就运行了,但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循环中添加事件循环吗?