Pygame与文本输入问题

时间:2013-12-01 04:25:26

标签: python pygame

使用pygame 1.9在python 2.7上运行

我的问题是我在用pygame构建的小游戏中需要文本输入。所以,环顾四周,我发现了this,这允许用户输入。 Eztext(上面的链接)提供了一种向用户呈现文本区域的好方法。但是,一旦用户点击进入,我就需要该文本区域的文本。

因此,考虑到这一点,我修改了eztext文件中更新函数的底部,以返回文本字段的值。

elif event.key == K_RETURN:
    return self.value
    self.value = ""

现在,在我的主循环中,在一个单独的文件中,我检查返回值是否为null,然后根据结果进行操作。

events = pygame.event.get()
msgvalue = txtbox.update(events)
if msgvalue is not None:
    break # Out of the main loop, so the program closes.

然而,当我在文本字段中输入时,没有任何反应。看起来好像update函数没有返回任何东西。这是完整的修改功能:

def update(self, events):
    """ Update the input based on passed events """
    for event in events:
        if event.type == KEYUP:
            if event.key == K_LSHIFT or event.key == K_RSHIFT: self.shifted = False
        if event.type == KEYDOWN:
            if event.key == K_BACKSPACE: self.value = self.value[:-1]
            elif event.key == K_LSHIFT or event.key == K_RSHIFT: self.shifted = True
            elif event.key == K_SPACE: self.value += ' '
            if not self.shifted:
                if event.key == K_a and 'a' in self.restricted: self.value += 'a'
                elif event.key == K_b and 'b' in self.restricted: self.value += 'b'
                elif event.key == K_c and 'c' in self.restricted: self.value += 'c'
                elif event.key == K_d and 'd' in self.restricted: self.value += 'd'
                elif event.key == K_e and 'e' in self.restricted: self.value += 'e'
                elif event.key == K_f and 'f' in self.restricted: self.value += 'f'
                elif event.key == K_g and 'g' in self.restricted: self.value += 'g'
                elif event.key == K_h and 'h' in self.restricted: self.value += 'h'
                elif event.key == K_i and 'i' in self.restricted: self.value += 'i'
                elif event.key == K_j and 'j' in self.restricted: self.value += 'j'
                elif event.key == K_k and 'k' in self.restricted: self.value += 'k'
                elif event.key == K_l and 'l' in self.restricted: self.value += 'l'
                elif event.key == K_m and 'm' in self.restricted: self.value += 'm'
                elif event.key == K_n and 'n' in self.restricted: self.value += 'n'
                elif event.key == K_o and 'o' in self.restricted: self.value += 'o'
                elif event.key == K_p and 'p' in self.restricted: self.value += 'p'
                elif event.key == K_q and 'q' in self.restricted: self.value += 'q'
                elif event.key == K_r and 'r' in self.restricted: self.value += 'r'
                elif event.key == K_s and 's' in self.restricted: self.value += 's'
                elif event.key == K_t and 't' in self.restricted: self.value += 't'
                elif event.key == K_u and 'u' in self.restricted: self.value += 'u'
                elif event.key == K_v and 'v' in self.restricted: self.value += 'v'
                elif event.key == K_w and 'w' in self.restricted: self.value += 'w'
                elif event.key == K_x and 'x' in self.restricted: self.value += 'x'
                elif event.key == K_y and 'y' in self.restricted: self.value += 'y'
                elif event.key == K_z and 'z' in self.restricted: self.value += 'z'
                elif event.key == K_0 and '0' in self.restricted: self.value += '0'
                elif event.key == K_1 and '1' in self.restricted: self.value += '1'
                elif event.key == K_2 and '2' in self.restricted: self.value += '2'
                elif event.key == K_3 and '3' in self.restricted: self.value += '3'
                elif event.key == K_4 and '4' in self.restricted: self.value += '4'
                elif event.key == K_5 and '5' in self.restricted: self.value += '5'
                elif event.key == K_6 and '6' in self.restricted: self.value += '6'
                elif event.key == K_7 and '7' in self.restricted: self.value += '7'
                elif event.key == K_8 and '8' in self.restricted: self.value += '8'
                elif event.key == K_9 and '9' in self.restricted: self.value += '9'
                elif event.key == K_BACKQUOTE and '`' in self.restricted: self.value += '`'
                elif event.key == K_MINUS and '-' in self.restricted: self.value += '-'
                elif event.key == K_EQUALS and '=' in self.restricted: self.value += '='
                elif event.key == K_LEFTBRACKET and '[' in self.restricted: self.value += '['
                elif event.key == K_RIGHTBRACKET and ']' in self.restricted: self.value += ']'
                elif event.key == K_BACKSLASH and '\\' in self.restricted: self.value += '\\'
                elif event.key == K_SEMICOLON and ';' in self.restricted: self.value += ';'
                elif event.key == K_QUOTE and '\'' in self.restricted: self.value += '\''
                elif event.key == K_COMMA and ',' in self.restricted: self.value += ','
                elif event.key == K_PERIOD and '.' in self.restricted: self.value += '.'
                elif event.key == K_SLASH and '/' in self.restricted: self.value += '/'
            elif self.shifted:
                if event.key == K_a and 'A' in self.restricted: self.value += 'A'
                elif event.key == K_b and 'B' in self.restricted: self.value += 'B'
                elif event.key == K_c and 'C' in self.restricted: self.value += 'C'
                elif event.key == K_d and 'D' in self.restricted: self.value += 'D'
                elif event.key == K_e and 'E' in self.restricted: self.value += 'E'
                elif event.key == K_f and 'F' in self.restricted: self.value += 'F'
                elif event.key == K_g and 'G' in self.restricted: self.value += 'G'
                elif event.key == K_h and 'H' in self.restricted: self.value += 'H'
                elif event.key == K_i and 'I' in self.restricted: self.value += 'I'
                elif event.key == K_j and 'J' in self.restricted: self.value += 'J'
                elif event.key == K_k and 'K' in self.restricted: self.value += 'K'
                elif event.key == K_l and 'L' in self.restricted: self.value += 'L'
                elif event.key == K_m and 'M' in self.restricted: self.value += 'M'
                elif event.key == K_n and 'N' in self.restricted: self.value += 'N'
                elif event.key == K_o and 'O' in self.restricted: self.value += 'O'
                elif event.key == K_p and 'P' in self.restricted: self.value += 'P'
                elif event.key == K_q and 'Q' in self.restricted: self.value += 'Q'
                elif event.key == K_r and 'R' in self.restricted: self.value += 'R'
                elif event.key == K_s and 'S' in self.restricted: self.value += 'S'
                elif event.key == K_t and 'T' in self.restricted: self.value += 'T'
                elif event.key == K_u and 'U' in self.restricted: self.value += 'U'
                elif event.key == K_v and 'V' in self.restricted: self.value += 'V'
                elif event.key == K_w and 'W' in self.restricted: self.value += 'W'
                elif event.key == K_x and 'X' in self.restricted: self.value += 'X'
                elif event.key == K_y and 'Y' in self.restricted: self.value += 'Y'
                elif event.key == K_z and 'Z' in self.restricted: self.value += 'Z'
                elif event.key == K_0 and ')' in self.restricted: self.value += ')'
                elif event.key == K_1 and '!' in self.restricted: self.value += '!'
                elif event.key == K_2 and '@' in self.restricted: self.value += '@'
                elif event.key == K_3 and '#' in self.restricted: self.value += '#'
                elif event.key == K_4 and '$' in self.restricted: self.value += '$'
                elif event.key == K_5 and '%' in self.restricted: self.value += '%'
                elif event.key == K_6 and '^' in self.restricted: self.value += '^'
                elif event.key == K_7 and '&' in self.restricted: self.value += '&'
                elif event.key == K_8 and '*' in self.restricted: self.value += '*'
                elif event.key == K_9 and '(' in self.restricted: self.value += '('
                elif event.key == K_BACKQUOTE and '~' in self.restricted: self.value += '~'
                elif event.key == K_MINUS and '_' in self.restricted: self.value += '_'
                elif event.key == K_EQUALS and '+' in self.restricted: self.value += '+'
                elif event.key == K_LEFTBRACKET and '{' in self.restricted: self.value += '{'
                elif event.key == K_RIGHTBRACKET and '}' in self.restricted: self.value += '}'
                elif event.key == K_BACKSLASH and '|' in self.restricted: self.value += '|'
                elif event.key == K_SEMICOLON and ':' in self.restricted: self.value += ':'
                elif event.key == K_QUOTE and '"' in self.restricted: self.value += '"'
                elif event.key == K_COMMA and '<' in self.restricted: self.value += '<'
                elif event.key == K_PERIOD and '>' in self.restricted: self.value += '>'
                elif event.key == K_SLASH and '?' in self.restricted: self.value += '?'
                elif event.key == K_RETURN: 
                    return self.value
                    self.value = ""

1 个答案:

答案 0 :(得分:1)

不敢相信我之前没有看到过这个,但是如果我正确地读了你的代码,那么update()检测K_return的唯一方法就是你要按住shift。

如果您没有按住Shift键,请尝试将适用的对象移动到条件的部分。