当前位置: 首页 > 面试题库 >

将Pygame窗口嵌入到Tkinter或WxPython框架中

柳灿
2023-03-14
问题内容

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

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

可以在pygame显示器旁边包含这些功能的任何其他方式也可以使用。


问题答案:

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

该代码是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行即可。我会建议

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


 类似资料:
  • 我和一个朋友在玩pygame游戏。我们希望在tkinter或WxPython框架中嵌入pygame窗口,这样我们就可以包含WX或tkinter支持的文本输入、按钮和下拉菜单。我在互联网上搜寻答案,但我发现所有人都在问同样的问题,没有一个得到很好的回答。 什么是最好的方式来实现一个pyplay显示嵌入到tkinter或WX框架?(首选TKinter) 这些功能可以与pygame显示器一起使用的任何其

  • 所以我正在用pygame做一个游戏,我也想用tkinter。我在tkinter窗口中嵌入了一个pygame窗口,但我似乎什么都做不了。 对于上下文,以下是完整的代码: 当我使用时,什么都不会发生。在类中使用pyplay是有效的,但是在我更复杂的游戏中,为所有变量使用self.variable似乎是不必要的。 如何在window类之外的pygame窗口中运行代码?

  • 我试图创建一个程序,它有一个tkinter窗口打开,然后当你按下一个按钮,它关闭tkinter窗口,打开一个pyplay窗口。然而,当我点击按钮打开pyplay窗口时,它会打开pyplay窗口,而tkinter窗口保持打开状态。 代码: 我还尝试使用: 我怎样才能解决这个问题?(我正在MacOS 11.1上运行Python 3.7.7)

  • 我已经分别对Tkinter窗口和pygame游戏进行了编码。然而,当我试图将两者联系起来时,游戏将不再有效。 Tkinter窗口用于允许用户输入数据,然后将数据保存到文件中,并在使用pygame制作的游戏中使用。主项目使用pygame制作,Tkinter窗口是一个附加功能。 我已尝试此操作,但接口冻结,因此出现以下错误: 有没有办法在我的pygame循环中嵌入Tkinter事件循环? 注意:这是我

  • 本文向大家介绍emacs 多个窗口或框架,包括了emacs 多个窗口或框架的使用技巧和注意事项,需要的朋友参考一下 示例 Emacs中的“窗口”指的是否则称为“窗格”或“屏幕划分”的内容。一些窗口操作命令包括: 水平分割当前窗口: C-x 2 垂直拆分当前窗口: C-x 3 选择下一个窗口: C-x o 关闭当前窗口: C-x 0 关闭所有其他窗口,但当前窗口除外: C-x 1 Emacs中的“框

  • 我正在使用Pygame模块制作一个简单的游戏。我需要Tkinter窗口与Pygame窗口一起打开。 每当我试图打开两个窗口时,第二个窗口只有在我杀死第一个窗口后才会打开。 现在,我能想到的唯一解决方案是使用多线程。但是,我无法实现它。 我该怎么做呢?我真的很感激这里的帮助。谢谢你!