Meine Anforderung ich ein Programm entwickle, in dem ich umgehen Raum und KeyPress-Raum Event zeitbasierte Ereignis zu behandeln.Tkinter pack_forget() und pack() Ausgabe auf Schlüsselrelease Ereignisse
Was ich mache, ist, dass beim Start des Programms ein Fenster geöffnet wird, um ein Zeitintervall anzuzeigen, sagen wir "5", das 5 Sekunden darstellt. Sobald die Zeit verstrichen ist (5 Sekunden), verschwindet der Text "5".
Nach dass der Benutzer erforderlich ist Raum Taste zu drücken, wenn der Benutzer drücken Raum Taste die gleiche Anzahl, bis der Benutzer angezeigt wird nicht loslassen Raum Schlüssel.
Ich habe 2 Sekunden Lücke gegeben nächstes Intervall zu zeigen (wenn Benutzer den Raum) und in diesem Intervall die Zahl sollte nicht angezeigt werden, die in früheren eingestellten Zeitintervall Raum Ereignis erscheinen wurden.
Problem Statement: Das Problem, das ich bin vor ist, dass ich es geschafft haben, Nummer (Text) auf Tastendruck angezeigt werden, aber wenn ich Loslassen der Taste, Zeitintervall nicht für 2 Sekunden verschwindet.
Hier ist mein Code:
from tkinter import Label, Tk
import time
times = [3, 4, 5]
loop = 0
class Demo:
def __init__(self, master):
global times, loop
self.parent = master
self.lbl = Label(master, text=times[loop])
master.after(times[loop]*1000, self.hideLabelAfterSomeTime)
master.bind("<space>", self.hideLabel)
master.bind("<KeyRelease-space>", self.showLabel)
print('called', loop)
self.lbl.pack()
def hideLabel(self, event):
global loop, times
self.lbl.config(text=times[loop])
self.lbl.pack()
def showLabel(self, event):
global loop
self.lbl.pack_forget()
time.sleep(2)
loop += 1
Demo(self.parent)
def hideLabelAfterSomeTime(self):
self.lbl.config(text= '')
master = Tk()
app = Demo(master)
master.geometry("400x300+400+200")
master.mainloop()
Es ist sehr unklar, was dieses Ding ... tun sollten, so ist es nicht leicht, Sie beheben zu helfen .. Es gibt auch einen Fehler nach ein paar Klicks auf der Leinwand: 'Listenindex außerhalb des Bereichs '......... Vielleicht möchten Sie die Zustände erklären, die Ihr System durchläuft, und vielleicht wird Ihr Fehler angezeigt, wenn Sie TU das. :) –
Während der Benutzer drücken, sollte ein Feld angezeigt werden und wenn der Benutzer verlässt, sollte die Box verschwinden und das nächste Ereignis sollte auftreten und erneut dieselbe Operation wiederholen, bis die Schleife beendet ist. Bitte ignorieren Sie den Indexfehler für eine Weile. –
Sahadev