如何接受来自 pygame GUI 的文本输入

Posted

技术标签:

【中文标题】如何接受来自 pygame GUI 的文本输入【英文标题】:How to accept text input from a pygame GUI 【发布时间】:2013-07-20 14:04:42 【问题描述】:

我正在使用 Python 和 Pygame 开发一款 RPG 游戏,并尝试制作一个由两部分组成的 GUI,包括类似于基本命令行的下部,以及将显示所有图形“动作”的顶部。 "

我需要找出一种将两者都包含在 pygame 窗口中的方法,而不是使用 pygame 窗口和终端窗口。另外,是否有任何适用于此用途的 Pygame GUI 工具包?

谢谢大家!

【问题讨论】:

这或多或少与我正在做的事情相同,虽然 ezText 看起来不错而且我可能会使用它,但我只是建议大家不要使用 pgu。它的文档记录很差,很难做到。 虽然如果您仍然需要输入,这个文件看起来是一个有希望的开始:pygame.org/pcr/inputbox/inputbox.py 实际上这似乎是从整个 pygame 会话中收集事件,所以没关系。 【参考方案1】:

我可以建议改用 ezText 吗? 这是向 pygame 添加文本输入栏的一种很酷的方法。我自己之前用过,真的很好用。

http://www.pygame.org/project-EzText-920-.html

(如果您需要使用它的帮助,请随时发表评论,尽管您需要知道的一切都在它随附的 example.py 中)

【讨论】:

是否有任何简单的方法可以识别文本输入是否在“前景”(这是最后一次点击)?因为如果它只接受事件并在这种情况下进行更新,那将是最好的,我很难做到这一点。【参考方案2】:

查看此处 (http://wiki.python.org/moin/PythonGameLibraries) 以获取 Pygame 和 Pyglet 的完整工具包列表。 Albow (http://www.cosc.canterbury.ac.nz/greg.ewing/python/Albow/) 过去对我很有效。

完成您所说的最简单的方法是制作两个 Surface,一个用于界面的每个部分,然后在单独的模块中不断更新它们,最终在每一帧中对它们进行 blit。这样您的主模块可以简化为:

import action_gui
import cl_gui
import pygame

pygame.init()
MAIN_SURF = pygame.display.set_mode((x, y))
pygame.display.set_caption('My Game')

while (True):
    action_surf = action_gui.update()
    cl_surf = cl_gui.update()
    MAIN_SURF.blit(action_surf, my_position_1)
    MAIN_SURF.blit(cl_surf, my_position_2)

祝你好运。

【讨论】:

非常酷(而且很有用:D)。我不认为我会使用它,但感谢您的回答!我相信我最终将能够使用它!

以上是关于如何接受来自 pygame GUI 的文本输入的主要内容,如果未能解决你的问题,请参考以下文章

pygame / python中的文本输入框[重复]

如何让 TkInter GUI(不是 shell 提示符)监听来自 /dev/stdin 的输入

为啥我不能在我的 pygame 文本框中输入超过 1 个字母? [复制]

如何在 Python GUI 中从用户输入的数字中使用任意数量的可用文本框

Windows 7和Windows XP中的TextBox之间是否存在根本差异

python学习之GUI(pygame键盘)