pygtk 的 Unicode 问题

4 投票
1 回答
506 浏览
提问于 2025-04-16 08:41

我遇到了一个问题: 我正在用Python编写一个问答游戏,适用于XO(OLPC机器),使用了pygame、pygtk和pgu这几个库。 当用户(一个小朋友)输入内容时,文本区域(来自pgu)无法识别像ñ、ó、á这样的特殊字符。 我尝试过一个更小的程序,只用pygame和pgu,结果一切正常。我觉得问题可能出在pygtk的unicode处理上,但我不知道该怎么检查或修正。

    app = gui.App()#gui is from pgu
    c = gui.Container(width =1200,height = 900)
    background = pygame.display.get_surface()
    app.init(c,background)
    #load initial screen

    while self.running and salir==1:
        background.blit(self.pantalla,(0,0))
        x,y = pygame.mouse.get_pos()
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                self.running = False
                return
            if event.type == pygame.KEYDOWN:
                if event.unicode.isalnum():
                    print event.unicode
                    print "Evento pygame:",event.key
                if event.key == pygame.K_DOWN:
                    exit()
            app.event(event)
        app.paint(background)
        app.update(background)
        pygame.display.flip()
        #now I have to manage pygtk events:
        p = gtk.events_pending()
        while p:
            gtk.main_iteration()

当我按下ñ键时,日志文件里显示:key ntilde unrecognized。

请帮帮我,我卡住了,必须交付这个软件。

1 个回答

0

当你导入gtk的时候,默认的编码会设置为utf-8。

import gtk, sys
print sys.getdefaultencoding()

因为在没有gtk的情况下运行得很好,我猜这可能和编码有关。

撰写回答