Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
User interface 在Tkinter中使用pygame功能_User Interface_Tkinter_Pygame - Fatal编程技术网

User interface 在Tkinter中使用pygame功能

User interface 在Tkinter中使用pygame功能,user-interface,tkinter,pygame,User Interface,Tkinter,Pygame,我想在我用Tkinter制作的GUI中使用pygame(精灵图形)的一些功能。我知道OcempGUI,但我更喜欢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`

我想在我用Tkinter制作的GUI中使用pygame(精灵图形)的一些功能。我知道OcempGUI,但我更喜欢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()

刚刚在windows上尝试过这个,它似乎工作得很好(没有注释掉的代码行)