Der Text aus dem Entry soll blinkend dargestellt werden. Wenn jedoch
danach ein weiterer Text eingegeben wird überlagert sich die aktuelle
'self.blink' Funktion mit der neuen. Meine 'Lösung' ist, dass erst 4 sec
nach dem 'weiter' das Blinken beginnt.
Code: Alles auswählen
import Tkinter as tk
class Gui():
k = 0
def __init__(self):
self.root = tk.Tk()
self.entry = tk.Entry(self.root)
self.entry.pack()
self.text = tk.StringVar()
self.label = tk.Label(self.root, textvariable=self.text)
self.label.pack()
self.button = tk.Button(self.root, text='Weiter', command=self.setLabel)
self.button.pack(side=tk.BOTTOM)
self.root.minsize(150,100)
self.root.mainloop()
def setLabel(self):
self.k = 1
def prozedur():
self.k = 0
self.blink()
self.root.after(4000, prozedur)
def blink(self, n=0):
# Set default pause value after first call.
# Than recursion with n = 1 or n = 2
# Pause ever-growing up to ca. 3500 ms
if self.k:
return
if n == 0:
self.pause = 500
self.runde = 1
self.blink(1)
if n == 1:
self.text.set(self.entry.get())
self.root.after(1250, self.blink, 2)
if n == 2:
self.text.set('')
if self.pause < 3000:
self.pause += 75 * self.runde
self.runde += 1
self.root.after(self.pause , self.blink, 1)
a = Gui()
Funktion mit dem Modul KThread (Kill a Thread with Python...) hintricksen.