在Tkinter中使用pygame功能
问题描述:
我想在我的Tkinter中使用的GUI中使用pygame(sprite graphics)的一些功能。我知道OcempGUI,但我更愿意坚持使用Tkinter,只是使用pygame中的一些模块。 This是相似的,但不完全相同。这可能吗?什么是潜在问题(事件循环)?在Tkinter中使用pygame功能
答
这适用于Linux。如果幸运的话,它也可能适用于其他操作系统。
import Tkinter as tk
import os
w, h = 500, 200
# Add a couple widgets. We're going to put pygame in `embed`.
root = tk.Tk()
embed = tk.Frame(root, width=w, height=h)
embed.pack()
text = tk.Button(root, text='Blah.')
text.pack()
# Tell pygame's SDL window which window ID to use
os.environ['SDL_WINDOWID'] = str(embed.winfo_id())
# The wxPython wiki says you might need the following line on Windows
# (http://wiki.wxpython.org/IntegratingPyGame).
#os.environ['SDL_VIDEODRIVER'] = 'windib'
# Show the window so it's assigned an ID.
root.update()
# Usual pygame initialization
import pygame as pg
pg.display.init()
screen = pg.display.set_mode((w,h))
pos = 0
while 1:
# Do some pygame stuff
screen.fill(pg.Color(0,0,0))
pos = (pos + 1) % screen.get_width()
pg.draw.circle(screen, pg.Color(255,255,255), (pos,100), 30)
# Update the pygame display
pg.display.flip()
# Update the Tk display
root.update()
刚试过这个窗口,它似乎工作正常(没有你已注释的代码行) – 2014-11-08 20:15:45