2017-09-09 15 views
1

pygameを使用しているプログラムでは、入力ボックスが必要です。私は自分で作ろうとしましたが、私はパイゲからキーに数字を変換するdictが必要です。私は数字や文字を含む辞書を持っていましたが、記号が必要です。数字キー辞書へ

http://www.pygame.org/pcr/inputbox/

はちょうどそれをダウンロードし、それはPythonでなく、pygameのためにかなり多くの入力のようなものです:

答えて

0

単純なテキスト入力ボックスの例です。 KEYDOWNイベントの.unicode属性を文字列に追加するだけで済みます。

import pygame as pg 


def main(): 
    screen = pg.display.set_mode((640, 480)) 
    font = pg.font.Font(None, 32) 
    clock = pg.time.Clock() 
    input_box = pg.Rect(100, 100, 140, 32) 
    color_unfocused = pg.Color('lightskyblue3') 
    color_focused = pg.Color('dodgerblue2') 
    color = color_unfocused 
    focused = False 
    text = '' 
    done = False 

    while not done: 
     for event in pg.event.get(): 
      if event.type == pg.QUIT: 
       done = True 
      if event.type == pg.MOUSEBUTTONDOWN: 
       if input_box.collidepoint(event.pos): 
        focused = not focused 
       else: 
        focused = False 
       color = color_focused if focused else color_unfocused 
      if event.type == pg.KEYDOWN: 
       if focused: 
        if event.key == pg.K_RETURN: 
         print(text) 
         text = '' 
        elif event.key == pg.K_BACKSPACE: 
         text = text[:-1] 
        else: 
         text += event.unicode 

     screen.fill((30, 30, 30)) 
     txt_surface = font.render(text, True, color) 
     width = max(200, txt_surface.get_width()+10) 
     input_box.w = width 
     screen.blit(txt_surface, (input_box.x+5, input_box.y+5)) 
     pg.draw.rect(screen, color, input_box, 2) 

     pg.display.flip() 
     clock.tick(30) 


if __name__ == '__main__': 
    pg.init() 
    main() 
    pg.quit() 
0

あなたはこれを使用することができます。