Использование функций Pygame в Tkinter - PullRequest
3 голосов
/ 21 декабря 2011

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

1 Ответ

10 голосов
/ 26 декабря 2011

Это работает в 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...