如何同时打开 Pygame 窗口和 Tkinter 窗口?

Posted

技术标签:

【中文标题】如何同时打开 Pygame 窗口和 Tkinter 窗口?【英文标题】:How to open a Pygame window and a Tkinter window simultaneously? 【发布时间】:2015-09-13 11:17:12 【问题描述】:

我正在使用 Pygame 模块制作一个简单的游戏。我需要在 Pygame 窗口旁边打开一个 Tkinter 窗口。

每当我尝试打开两个窗口时,第二个窗口只有在我杀死第一个窗口后才会打开。

现在,我能想到的唯一解决方案是使用多线程。但是,我无法实现它。

我该怎么做? 我真的很感激这里的一些帮助。 谢谢!

【问题讨论】:

【参考方案1】:

在 pygame 中存在一个基本设计问题,如果进程已经有一个窗口,它就无法打开一个窗口。它还将阻止其他窗口在运行时打开。但是,您可以打开任意数量的 TK 窗口,并且可以在 TK 窗口内的 SDL 绘图框架内嵌入 pygame 窗口。

有关如何使用绘图框,请参阅此答案:Embedding a Pygame window into a Tkinter or WxPython frame

查看这个关于如何在tkinter中创建多个窗口的答案:How to open multiple windows in Tkinter

【讨论】:

我可以通过设置 Tkinter frame-width = 0 得到我想要的。现在它很像一个 Pygame 窗口,我可以打开多个 Tkinter 窗口。真的很有帮助! 我只是有一个问题,我正在使用 pygame.mouse.get_pos() 打印鼠标位置的值。但是现在鼠标位置值在我移动时不会更新。在将 Pygame 窗口嵌入 Tkinter 窗口之前,它工作得非常好。但是现在,我必须点击,然后我才开始获取新的位置值(我点击的地方) 很抱歉我不知道。可能是事件系统默认在嵌入式窗口中不起作用,您需要在 tkinter 中检测事件并将其转发给 pygame 并使用pygame.event.post()

以上是关于如何同时打开 Pygame 窗口和 Tkinter 窗口?的主要内容,如果未能解决你的问题,请参考以下文章

python tkinter 防止重复打开相同的窗口?

python-tkinter如何打开动图(.gif)?

Tkinter 用窗口打开控制台窗口

python3 tkinter中如何设置根窗口标题文字字体及大小和根菜单文字字体及大小?

将按键发送到嵌入式 Pygame

[Pygame&tkinter]真·中文输入框