pygame貌似没有直接的输入框给你调用,你可以设置一个点击的事件触发键盘记录,将接收到的字符串实时显示到屏幕上。而中文的话,你可以用拼音转中文的库,不过应该比较麻烦。我在官网上找到了一个跟我思路差不多的实现,这个不支持中文输入,你可以自己搞一个简单的,例如Pinyin2Hanzi库就可以帮你实现一个简单地转换。应该是inputbox。还有一个是pygame的pgu库,这是第三方开发的,有输入框,你可以看下文档,具体怎么使用你自己学吧。http://www.pygame.org/pcr/inp... import pygame, pygame.font, pygame.event, pygame.draw, string from pygame.locals import * def get_key(): while 1: event = pygame.event.poll() if event.type == KEYDOWN: return event.key else: pass def display_box(screen, message): "Print a message in a box in the middle of the screen" fontobject = pygame.font.Font(None,18) pygame.draw.rect(screen, (0,0,0), ((screen.get_width() / 2) - 100, (screen.get_height() / 2) - 10, 200,20), 0) pygame.draw.rect(screen, (255,255,255), ((screen.get_width() / 2) - 102, (screen.get_height() / 2) - 12, 204,24), 1) if len(message) != 0: screen.blit(fontobject.render(message, 1, (255,255,255)), ((screen.get_width() / 2) - 100, (screen.get_height() / 2) - 10)) pygame.display.flip() def ask(screen, question): "ask(screen, question) -> answer" pygame.font.init() current_string = [] display_box(screen, question + ": " + string.join(current_string,"")) while 1: inkey = get_key() print(inkey ) if inkey == K_BACKSPACE: current_string = current_string[0:-1] elif inkey == K_RETURN: break elif inkey == K_MINUS: current_string.append("_") elif inkey <= 127: current_string.append(chr(inkey)) display_box(screen, question + ": " + string.join(current_string,"")) return string.join(current_string,"") def main(): screen = pygame.display.set_mode((320,240)) print (ask(screen, "Name") + " was entered") if __name__ == '__main__': main()
pygame貌似没有直接的输入框给你调用,你可以设置一个点击的事件触发键盘记录,将接收到的字符串实时显示到屏幕上。而中文的话,你可以用拼音转中文的库,不过应该比较麻烦。
我在官网上找到了一个跟我思路差不多的实现,这个不支持中文输入,你可以自己搞一个简单的,例如Pinyin2Hanzi库就可以帮你实现一个简单地转换。应该是inputbox。
还有一个是pygame的pgu库,这是第三方开发的,有输入框,你可以看下文档,具体怎么使用你自己学吧。
http://www.pygame.org/pcr/inp...