2011-12-21 2 views
3

Я хотел бы использовать некоторые функции из pygame (спрайт-графики) в моем графическом интерфейсе, который я сделал в Tkinter. Я знаю OcempGUI, но я бы предпочел придерживаться Tkinter, просто используйте некоторые модули из pygame. This похоже, но не совсем то же самое. Это вообще возможно? Каковы потенциальные проблемы (цикл событий)?Использование функций pygame в Tkinter

ответ

9

Это работает на 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() 
+1

Просто попробовал это для окон, и, похоже, он работает нормально (без строки кода, которую вы прокомментировали) –

Смежные вопросы