【问题标题】:Unexpected error while using PyGame audio使用 PyGame 音频时出现意外错误
【发布时间】:2015-11-05 16:38:48
【问题描述】:

我正在尝试编写一个在后台循环播放音频文件的脚本。要播放的音频是在音频文件列表中随机选择的。

我尝试这样做:http://www.nerdparadise.com/tech/python/pygame/basics/part3/

并写道:

from tkinter import *
import random
import pygame

_songs = ['audio1.ogg', 'audio2.ogg', 'audio3.ogg']
pygame.mixer.init()

_currently_playing_song = None

SONG_END = pygame.USEREVENT+1
pygame.mixer.music.set_endevent(SONG_END)


next_song = random.choice(_songs)
while next_song == _currently_playing_song:
        next_song = random.choice(_songs)
_currently_playing_song = next_song
pygame.mixer.music.load(next_song)
pygame.mixer.music.play()

while True:
        for event in pygame.event.get():
                if event.type == SONG_END:
                        pygame.mixer.music.load(next_song)
                        pygame.mixer.music.play()  
tk = Tk()
photo = PhotoImage(file="image.GIF")


image_label=Label(tk, image=photo)
image_label.grid(row=0, column=2)

tk.mainloop()

但我得到这个错误:

for event in pygame.event.get():
pygame.error: video system not initialized 

有没有办法解决这个问题,或者使用 tkinter 代替 pygame 视频系统来使用 pygame?

【问题讨论】:

  • 从未尝试过将 Tk 与 pygame 混合。两者都用于呈现 GUI 和处理事件。除非您非常小心,否则我认为它们会发生冲突。

标签: python python-3.x audio pygame


【解决方案1】:

您需要致电pygame.init()。这将初始化视频系统,这是使用pygame.event 所必需的。在每个使用 pygame 的程序开始时调用是一个好习惯。有关更多信息,请参阅 pygame 事件文档here

希望这会有所帮助。

编辑:

正如@cmd 提到的,该程序将无法正确运行,因为您同时使用了具有冲突循环的 Tkinter 和 pygame。一个可能的解决方案是切换到只使用一个或另一个而不是两者。有关更多信息,请参阅问题here

【讨论】:

  • 抱歉,没用。如果我在 import pygame 之后添加 pygame.init(),当我运行 int 时,会出现一个 Python shell,但没有任何反应。
  • 是否出现了错误,或者应该发生的事情没有发生?
  • 应该会出现一个带有图像的窗口,背景音乐正在播放。但只出现了一个空壳。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-06
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多