2017-02-03 8 views
0

Ich schreibe ein einfaches GUI-Programm in Python 2.7 mit Tkinter. Der Benutzer sollte aufgefordert werden, "Drücken Sie eine beliebige Taste, um fortzufahren".Wie kann ich Tkinter auf einen Tastendruck warten lassen, bevor Sie fortfahren?

Derzeit ist die (vereinfacht) Code sieht wie folgt aus:

# -*- 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() 

Kennen Sie eine effiziente Art und Weise, dies zu tun?

Antwort

1

Es gibt viele Möglichkeiten, dies besser zu tun, aber hier ist ein Anfang. self.state sollte eine Aufzählung sein, so dass die möglichen Zustände zum einen explizit definiert sind.

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() 
Verwandte Themen