import tkinter
from itertools import cycle
class BlinkMessage(tkinter.Message):
def __init__(self, *args, **kwargs):
self._ms = kwargs.pop('ms', 500)
super().__init__(*args, **kwargs)
self._blink_color = cycle([self['fg'], self['bg']])
self._blink()
def _blink(self):
self['fg'] = next(self._blink_color)
self.after(self._ms, self._blink)
tkinter.Message
использовать этот BlinkMessage
:cont_text = BlinkMessage(root, text=mesaja, justify=CENTER, width=root.winfo_screenwidth(), bg="#e6e7e8",
font=("Arial Narrow", 80, "bold"), fg="#231f20")
ms
, который задаёт интервал смены цвета в миллисекундах:cont_text = BlinkMessage(root, text=mesaja, justify=CENTER, width=root.winfo_screenwidth(), bg="#e6e7e8",
font=("Arial Narrow", 80, "bold"), fg="#231f20", ms=350)
# -*- coding: utf-8 -*-
from Tkinter import *
import urllib, ttk, tkMessageBox
from threading import Thread
from Queue import Queue
queue = Queue() # создаём очередь
def downloader():
urllib.urlretrieve('http://cs521111v4.vk.me/u176613573/audios/d622212d34bf.mp3', 'Big K.R.I.T. – Bigger Picture.mp3')
queue.put(True) # помещаем в очередь True, после завершения загрузки. В очередь можно помещать любой объект.
th = Thread(target=downloader, args=())
def starter(event):
th.start()
pb.pack()
pb.start()
root = Tk()
# создаём задачу, которая раз в секунду будет проверять очередь
def task():
try:
q = queue.get_nowait() # получить значение из очереди
except: # если в очереди ничего нет, то возвращаем False
q = False
if q: # если вернулось True, то сообщаем об окончании
tkMessageBox.showinfo('Done')
root.after(1000, task) # снова перезапускаем задачу после выполнения
root.after(1000, task) # инициализация задачи
pb = ttk.Progressbar(length=200, orient='horizontal', mode='indeterminate')
but = Button(root, text = 'Go!')
root.minsize(width=400, height=350)
but.bind('<Button-1>', starter)
but.pack()
root.mainloop()