Как я могу изменить текст кнопки, от текста до пустого имени с задержкой?

Я использую библиотеку tkinter для графического интерфейса. В основном я создаю 4 кнопки, используя цикл for, каждый из которых имеет случайное число в качестве своего текста. Теперь я застрял при попытке реализовать метод, который позволяет отображать текст кнопки в виде числа, а затем ничего не меняет ни секунды, или так (после этого следующая кнопка будет выполнять тот же процесс). Таким образом, метод позволит каждой кнопке мигать, а затем переходит к следующему (до тех пор, пока все кнопки не начнут мигать их номера за один раз).

Это код, который я получил до сих пор

from tkinter import * from tkinter.messagebox import showinfo from random import randint def set_colors(a): if a == 0: return "red" elif a == 1: return "green" elif a == 2: return "blue" elif a == 3: return "yellow" def set_random(): random_int = 0 random_int = randint(0, 100) return random_int LARGE_FONT = ("Verdana",20) color = 0 root = Tk() frame = Frame(root) root.title("Test") root.geometry("200x200") root.resizable(0, 0) Grid.rowconfigure(root, 0, weight=1) Grid.columnconfigure(root, 0, weight=1) frame.grid(row=0, column=0, sticky=N + S + E + W) grid = Frame(frame) grid.grid(sticky=N + S + E + W, column=0, row=7, columnspan=2) Grid.rowconfigure(frame, 7, weight=1) Grid.columnconfigure(frame, 0, weight=1) for x in range(2): for y in range(2): rand_no = set_random() btn = rand_no btn = Button(frame, text=btn, bg=set_colors(color) , font=LARGE_FONT) btn.grid(column=x, row=y, sticky=N + S + E + W) color += 1 for x in range(2): Grid.columnconfigure(frame, x, weight=1) for y in range(2): Grid.rowconfigure(frame, y, weight=1) root.mainloop() 

Изображение выхода. Далеко я понял, что мне нужно импортировать библиотеку времени и использовать метод sleep (), чтобы получить требуемую задержку. Но мне все еще нужно:

Разрешить панели загружаться с помощью кнопок (без каких-либо цифр). Затем кнопки начинают мигать номер один после друг друга, пока все кнопки не начнут мигать номер за один раз.

Помогите

One Solution collect form web for “Как я могу изменить текст кнопки, от текста до пустого имени с задержкой?”

Память – это все!

 #!/usr/bin/python import os import thread,time import random import math try: dirs = os.path.dirname(os.__file__).lower() if "python2" in dirs: from Tkinter import * elif "python3" in dirs: from tkinter import * except Exception,e : print e LARGE_FONT = ("Verdana",20) color = 0 root = Tk() frame = Frame(root) root.title("Very Hard Memory Game !") root.geometry("200x200") root.resizable(0, 0) Grid.rowconfigure(root, 0, weight=1) Grid.columnconfigure(root, 0, weight=1) frame.grid(row=0, column=0, sticky=N + S + E + W) grid = Frame(frame) grid.grid(sticky=N + S + E + W, column=0, row=8, columnspan=2) Grid.rowconfigure(frame, 8, weight=1) Grid.columnconfigure(frame, 0, weight=1) class _zo : pass zo = _zo() zo.foo = [] zo.pick = None zo.lq =[] zo.a = {} zo.level = 0 zo.lev_list = [4,9,16,25,36,49,64,81] zo.miss = 0 def get_num(num): h = sorted(zo.a.keys()) p = zo.foo.index(num) if num in zo.lq and num == zo.pick : zo.a["%0.2d_%d"%(p,num)].config(text=num, state="disabled") if len(zo.lq) > 1 : zo.lq.remove(num) zo.pick = ( random.choice(zo.lq)) zo.a["my_lab"].config(text= "where is %d ?" % zo.pick) elif len(zo.lq) == 1: zo.lq = [] zo.foo = [] zo.pick = None zo.level = zo.level +1 for s in zo.a.keys() : zo.a[s].destroy() zo.a = {} do_cube(zo.lev_list[zo.level]) else: zo.miss += 1 zo.a["my_lab"].config(text="Try again for (%d)!(Miss:%s)"%(zo.pick,zo.miss)) def timot(hu): time.sleep(2) n = sorted(zo.a.keys()) for s in n : if not s.startswith("my"): y = zo.foo[n.index(s)] zo.a[s].config(text=y) time.sleep(1) zo.a[s].config(text="") zo.pick = random.choice(zo.foo) for j in n: zo.a[j].config(state="normal") zo.a["my_lab"].config(text="where is %d ?" %zo.pick) def do_cube(many): bx = int(math.sqrt(many)) w = (200+(200*(zo.level*0.15))) root.geometry("%dx%d+400+200" %(w,w+(20+(5*zo.level)))) color = "orange","red","green","blue","yellow","brown","dodgerblue","pink" zo.foo = random.sample(range(100),many) zo.lq = [e for e in zo.foo] for x in range(bx): for y in range(bx): ind = (x*bx) + y rand_no = zo.foo[ind] butn = Button(frame, bg=color[x], command= lambda rand_no=rand_no:get_num(rand_no), font=LARGE_FONT,state="disabled") butn.grid(column=x, row=y, sticky=N + S + E + W) zo.a["%0.2d_%d"%(ind,rand_no)] = butn for x in range(bx): Grid.columnconfigure(frame, x, weight=1) for y in range(bx): Grid.rowconfigure(frame, y, weight=1) zo.a["my_lab"] = Label(root,text="ready !") zo.a["my_lab"].grid(column=0, row=bx+1, sticky=N + S + E + W,columnspan = bx) thread.start_new_thread(timot,(None,)) do_cube(zo.lev_list[zo.level]) root.mainloop() 
  • Как я могу сопоставить цвета фона для рамки в ноутбуке для ttk / Tkinter на Mac?
  • Ошибка Python Tkinter, «Слишком рано создавать изображения»
  • Окно Python Tkinter не закрывается
  • Почему мой обработчик click ttk.Treeview возвращает неправильный элемент в tree.focus ()?
  • Вставить значок в скрипт python
  • Как установить текст по умолчанию для виджета Tkinter Entry
  • Изменение стиля рамки окна tkinter
  • Tkinter Grid: как размещать виджетов, чтобы они не склеивались
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.