将Pygame窗口嵌入到Tkinter或WxPython框架中 [英] Embedding a Pygame window into a Tkinter or WxPython frame

查看:685
本文介绍了将Pygame窗口嵌入到Tkinter或WxPython框架中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我和一个朋友正在pygame中进行游戏。我们希望将pygame窗口嵌入到tkinter或WxPython框架中,以便我们可以包括WX或Tkinter支持的文本输入,按钮和下拉菜单。我搜寻了互联网上的答案,但是发现的所有人都在问同样的问题,但都没有一个很好的答案。

A friend and I are making a game in pygame. We would like to have a pygame window embedded into a tkinter or WxPython frame, so that we can include text input, buttons, and dropdown menus that are supported by WX or Tkinter. I have scoured the internet for an answer, but all I have found are people asking the same question, none of these have been well answered.

实现嵌入到tkinter或WX框架中的pygame显示的最佳方法是什么? (最好是TKinter)

What would be the best way implement a pygame display embedded into a tkinter or WX frame? (TKinter is preferable)

将这些功能与pygame显示器一起包含的任何其他方式也将起作用。

Any other way in which these features can be included alongside a pygame display would also work.

推荐答案

根据这个 SO问题和公认的答案,最简单的方法是使用SDL并条机。

According to this SO question and the accepted answer, the simplest way to do this would be to use an SDL drawing frame.

此代码是SO用户 Alex Sallons 。

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()
def draw():
    pygame.draw.circle(screen, (0,0,0), (250,250), 125)
    pygame.display.update()
    button1 = Button(buttonwin,text = 'Draw',  command=draw)
    button1.pack(side=LEFT)
    root.update()

while True:
    pygame.display.update()
    root.update()      

此代码是跨平台的,只要 windb 在非Windows系统上省略SDL_VIDEODRIVER行。我建议

This code is cross-platform, as long as the windb SDL_VIDEODRIVER line is omitted on non Windows systems. I would suggest

# [...]
import platform
if platform.system == "Windows":
    os.environ['SDL_VIDEODRIVER'] = 'windib'
# [...]

这篇关于将Pygame窗口嵌入到Tkinter或WxPython框架中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆