Python 3.x 在tkinter主循环中打印所有pygame事件
我想打印应用程序中发生的所有事件。 我在pygame中使用Python3,我使用tkinterPython 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
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()