Python 3.x 在tkinter主循环中打印所有pygame事件

Python 3.x 在tkinter主循环中打印所有pygame事件,python-3.x,tkinter,event-handling,pygame,tk,Python 3.x,Tkinter,Event Handling,Pygame,Tk,我想打印应用程序中发生的所有事件。 我在pygame中使用Python3,我使用tkinter import pygame from tkinter import * from tkinter import ttk def main(): root = Tk() app = soundscene(root) while True: for event in pygame.event.get(): print

我想打印应用程序中发生的所有事件。 我在pygame中使用Python3,我使用tkinter

import pygame
from tkinter import *
from tkinter import ttk

def main():            

    root = Tk()
    app = soundscene(root)
    while True:
        for event in pygame.event.get():
           print (event)
    root.mainloop()


if __name__ == "__main__":
    main()
此代码没有按预期运行,因为循环阻塞,这是有意义的
我的问题是如何使while true循环的内容成为eventloop的一部分,以便它打印出所有pygame事件?

要接收pygame事件,必须初始化pygame窗口/显示

输入队列严重依赖于pygame显示模块。如果显示器尚未初始化且未设置视频模式,则事件队列将无法正常工作

但是,如果您确实希望将tkinter与pygame一起使用,则可以将pygame窗口嵌入tkinter窗口。但是,这仅在使用嵌入式窗口时提供pygame事件。下面是另一个例子:


如果您正在寻找一种在使用tkinter小部件时接收事件的方法,那么可以在tkinter中设置绑定。更多信息请访问

感谢您抽出时间回答,我忘了提及我只关心pygame.mixer.Sound模块及其事件我不确定是否还需要一个框架。声音播放的效果和预期的一样。
import pygame
import tkinter as tk
from tkinter import *
import os

root = tk.Tk()
embed = tk.Frame(root, width = 500, height = 500) #creates embed frame    for pygame window
embed.grid(columnspan = (600), rowspan = 500) # Adds grid
embed.pack(side = LEFT) #packs window to the left
buttonwin = tk.Frame(root, width = 75, height = 500)
buttonwin.pack(side = LEFT)
os.environ['SDL_WINDOWID'] = str(embed.winfo_id())
os.environ['SDL_VIDEODRIVER'] = 'windib'
screen = pygame.display.set_mode((500,500))
screen.fill(pygame.Color(255,255,255))
pygame.display.init()
pygame.display.update()

while True:
    for event in pygame.event.get():
        print(event)
    pygame.display.update()
    root.update()