В настоящее время я работаю над своим проектом курсовой работы, и я хочу выполнить простую функцию. Программа в основном на tkinter, я хочу, чтобы ярлык показывался в течение 3 секунд, скрывался в течение 7 секунд в течение одного периода, и в следующем периоде текст в ярлыке должен измениться; пока метка меняется, я пытаюсь отключить поле ввода в первые 3 секунды, а затем нормализовать его.
Обратный отсчет и изменение текста метки были в порядке, но поле ввода не отвечает вообще, когда оно нормализуется.
вот мой код
def c_time():
from tkinter import *
import time
root=Tk()
en = Entry(root)
en.pack(side=TOP)
en.focus_force()
la = Label(root, text='6666')
la.pack(side=BOTTOM)
li = ['a', 'b','c','d']
for i in li:
la.config(text=i)
root.update()
def la_diappear():
root.after(3000)
la.pack_forget()
root.update()
def la_appear():
root.after(7000)
la.pack()
la_diappear()
la_appear()
root.mainloop()
c_time()
Были испробованы оба метода: root.after и time.sleep
и я попробовал многопроцессорную обработку, когда получил информацию о GIL в python:
from multiprocessing import Process
import time
from tkinter import *
def count_down():
global total
total = 5
for i in range(total):
time.sleep(1)
total -= 1
print(total)
def tkwindow():
root=Tk()
en = Entry(root)
en.pack(side=TOP)
en.focus_force()
la = Label(root, text='6666')
la.pack(side=BOTTOM)
li = ['a', 'b','c','d']
for i in li:
la.config(text=i)
root.update()
count_down()
if total == 3:
la.pack_forget()
root.update()
if total == 5:
la.pack()
root.mainloop()
if __name__ == "__main__":
a = Process(target=count_down)
b = Process(target=tkwindow)
b.start()
приведенный выше код должен работать сразу.
Пожалуйста, ответьте, если какие-либо мысли связаны
Большое спасибо.