【问题标题】:Using text inputs in pygame在 pygame 中使用文本输入
【发布时间】:2013-07-01 07:14:51
【问题描述】:
import tkinter as tk    
import pygame

pygame.init()
ss = width, height = 1024, 600
screen = pygame.display.set_mode(ss)
tkinput_1 = True    

while True:

    event = pygame.event.poll()
    keys = pygame.key.get_pressed()

    if event.type == pygame.QUIT:
        pygame.quit()
        sys.exit()

    screen.fill((0,0,0))

    if tkinput_1 == True:
         tkinput_root1 = tk.Tk()
         tkinput_root1.geometry("200x200")
         tkinput_root1.title("How many teams?")
         tkinput_input1 = tk.Entry(tkinput_root1)
         tkinput_1 = False

    pygame.display.update()

tkinput_root1.mainloop()

这只是我在 pygame 中给 tkinter 文本输入框一个镜头。我相当确定它不会正常工作,但决定无论如何我都会尝试,因为我没有什么可失去的。 在您退出 pygame 之前,tkinter 屏幕不会显示。 所以,我不是问是否有人知道如何修复代码,而是问是否有人知道在 pygame.xml 中创建文本框的最简单方法。我知道有一个可以导入的 textinput 类模块。如果您认为这是最简单的方法,那么您可以引导我完成它。如果不能,请让我知道您认为最简单的方法是什么。这是一个小程序,所以我想避免为一个简单的文本框编写大量繁重的代码行。让我知道你们的想法。 提前非常感谢。

【问题讨论】:

  • 实际上有一种方法可以在 tkinter 应用程序中放置一个 pygame 显示,但这比它的价值要麻烦得多。虽然我最终确实这样做了,但即使它运行良好几秒钟后仍然发生了很多错误,我放弃并决定使用 EzText

标签: python input textbox tkinter pygame


【解决方案1】:

你可以使用我正在制作的一个小库,只需下载it并使用它。

做一个简单的文本框试试:

from GUI import *

input_bow = InLineTextBox((0, 0), 200)  

你必须至少给它一个位置和大小 然后在你的输入循环中,更新它:

for e in pygame.event.get():
    input_box.update(e)

最后,渲染它:

input_box.render(screen)

你可以随时用input_box.text获取文字

【讨论】:

    【解决方案2】:

    关于你所说的 InputBox 错误,你所要做的就是找到并替换它所说的所有地方(不带引号)string.join(current_string,"")"".join(current_string),因为我认为这是 python 3.4 中的新功能,无论如何,希望有帮助。

    【讨论】:

      【解决方案3】:

      我推荐使用 EzText。这是将文本输入添加到 pygame 程序中的好方法。我亲自使用过它,它既好用又简单,可与 python 3.3.2 一起使用。

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

      【讨论】:

        【解决方案4】:

        我尝试过使用 Tk,但使用的问题是当 Tk 窗口弹出时它会停止整个 pygame 程序,而且效果不佳

        这就是我使用的Pygame InputBox,它不是最漂亮的,但它很好用,只需下载它,它真的很容易使用

        只需import inputbox

        然后做这样的事情:

        inp = int(inputbox.ask(screen, 'Message')) #inp will equal whatever the input is
        

        这很像raw_input,但对于 pygame

        它不是最美观的,但我敢肯定,如果你四处搜索,你可能会找到一个更好的

        【讨论】:

        • 嗨克里斯蒂安,我本来打算使用输入框,但在运行它时出现错误.... AttributeError: 'module' object has no attribute 'join' ...它说的是字符串。加入。我查看了代码,一切似乎都很好,但我并不完全熟悉输入框 py 文件中发生的所有事情。我正在使用 python 3.3 和 pygame 3.3,这可能是个问题吗?感谢您的回复。
        • 所以当你运行输入框文件或你的主游戏文件时会发生这种情况
        • 两者,当我运行我的主游戏文件时发生错误。然后我运行了 inputbox.py 文件并得到了同样的错误。有人告诉我,从“字符串”模块中删除了很多旧函数,但我不确定如何修复它。我很惊讶在互联网上环顾四周,似乎没有其他人遇到同样的问题。有什么想法吗?
        • 它对我有用,所以肯定是因为它与 python 3.3 不兼容,我四处寻找,但没有找到任何东西,如果我这样做了,我会告诉你
        • 没问题希望我能提供更多帮助祝你好运!
        猜你喜欢
        • 1970-01-01
        • 2012-11-07
        • 2016-09-08
        • 2013-05-20
        相关资源
        最近更新 更多