5
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 类模块。如果您认为这是最简单的方法,那么您可以引导我完成它。如果不能,请让我知道您认为最简单的方法是什么。这是一个小程序,所以我想避免为一个简单的文本框编写大量繁重的代码行。让我知道你们的想法。提前非常感谢。

4

4 回答 4

7

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

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

只是import inputbox

然后做这样的事情:

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

这很像,raw_input但对于 pygame

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

于 2013-07-03T14:33:03.860 回答
2

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

要制作一个简单的文本框,请尝试:

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您可以随时获取文本

于 2017-06-17T21:56:18.360 回答
1

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

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

于 2013-07-25T12:14:58.073 回答
1

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

于 2016-09-10T11:46:21.857 回答