#python #tkinter
#python #tkinter
Вопрос:
у меня есть метод с именем compare image, который сравнивает лицо между сохраненным файлом и лицом с помощью захвата камеры ,
иногда для его обработки требуется много времени, я хотел бы использовать анимацию, такую как панель загрузки, или, может быть, я могу использовать файл .gif, пока весь процесс не будет завершен
это пример моего кода
def compareimage(id):
try:
loadimage()
compareimage()
insertlogintodatatabase()
savelogimage()
except:
exception()
жаль, что я не могу создать анимацию во время всего этого процесса ,
как я могу его создать?
введите код здесь
Ответ №1:
Не совсем понял, что вы подразумеваете под «анимацией», потому что это может означать несколько вещей. Если вы пытаетесь создать панель прогресса в tkinter, импортируйте файл tkinter.ttk, и все готово! Код для определенной панели прогресса:
from tkinter import *
from tkinter import ttk
root = Tk()
root.geometry("400x300")
prg = ttk.Progressbar(root, orient=HORIZONTAL, length=300, mode='determinate')
prg.pack(pady=20)
# You can use the start function to animate the progress bar just give it an int to determine the speed!
prg.start(10)
# You can also use the two lines below to add to the progress bar's value
# prg.step(5)
# prg['value'] = 50
root.mainloop()
Также вы можете установить режим на «неопределенный», а затем запустить индикатор выполнения, который может быть тем, что вам нужно. Если вы говорите о пользовательских анимациях, то это немного другое. Если
вы хотите создать пользовательский индикатор выполнения в tkinter, вам следует использовать виджет Canvas. Пример настраиваемого индикатора выполнения в tkinter с использованием canvas:
from tkinter import *
root = Tk()
root.geometry("400x400")
root.config(bg="black")
percent = 0
progress = None
canvas = Canvas(root, width=310, height=10, bg="black", highlightcolor="black", highlightbackground="black")
canvas.pack(pady=10)
rect = canvas.create_rectangle(5, 0, 300, 6, fill="#2C383E", outline="#2C383E")
def animate():
global percent, progress
if percent < 100:
percent = 1
if progress is not None:
canvas.delete(progress)
progress = canvas.create_rectangle(5, 0, percent * 3, 6, fill="#3333ff", outline="#3333ff")
# Remove these two lines (the elif statement) to make the progress bar 'determinate'
elif percent == 100:
percent = 0
root.after(5, animate)
# You can just call the function or assign it to a button
# animate()
btn = Button(root, text="Fill! ", command=animate)
btn.pack()
root.mainloop()