2017-02-03 4 views
0

私はPython 2.7でTkinterを使って簡単なGUIプログラムを書いています。 「続行するには、いずれかのボタンを押してください」というメッセージが表示されます。続行する前にTkinterがキーを押すのを待たせますか?

は現在、(簡体字)のコードは次のようになります。

# -*- coding: utf-8 -*- 
from Tkinter import * 

class App(): 
    def __init__(self,root): 
     Label(text="Press any key to continue!").grid(row=0,column=0) 
     self.game() 

    def game(self):  
     # some method to check if the user has pressed any key goes here 
     Label(text="The Game is starting now!").grid(row=0,column=0) 

    def key(self,event): 
     print event.char 
     return repr(event.char) 


root = Tk() 
game_app = App(root) 
root.bind('<Key>',game_app.key) 
root.mainloop() 

あなたはこれを行うための効率的な方法を知っていますか?

答えて

1

この方法を改善する方法はたくさんありますが、ここでは始まります。 self.stateは、可能な状態が明示的に定義されるように、列挙型にする必要があります。

https://gist.github.com/altendky/55ddb133cb3c9624546fdf8182564f07

# -*- coding: utf-8 -*- 
from Tkinter import * 

class App(): 
    def __init__(self,root): 
     Label(text="Press any key to continue!").grid(row=0,column=0) 
     self.state = 'startup' 

    def loop(self):  
     # some method to check if the user has pressed any key goes here 
     if self.state == 'startup': 
      Label(text="The Game is starting now!").grid(row=0,column=0) 
     elif self.state == 'running': 
      Label(text="The Game is running now!").grid(row=0,column=0) 

     root.after(20, self.loop) 

    def key(self,event): 
     if self.state == 'startup': 
      self.state = 'running' 


root = Tk() 
game_app = App(root) 
root.bind('<Key>',game_app.key) 
root.after(20, game_app.loop) 
root.mainloop() 
関連する問題