tkinter gif问题:黑色变为白色,以前的框架不会消失
我正在尝试在Python编码桌面宠物。为此,我主要使用了TKINTER。我设法创建了一个带有两个GIF的窗口,这些窗口彼此跟随,但是我对框架的显示有问题。正如您在图片中看到的那样,黑色变为白色,有时它完全消失了……此外,对于其中一个GIF,两个帧同时出现,一个以前的 一个停留而不是消失。  
这是我的代码:
import random
import tkinter as tk
import pyautogui
impath = '.\\Assets\\'
x = 1400
cycle = 0
check = 0
probality=10
idle_num = list(range(0,7))
cry_num = list(range(7,11))
event_number = random.randrange(probality)
#transfer random no. to event
def event(cycle, check, event_number, x):
if event_number in idle_num:
check = 0
print('idle')
window.after(500, update, cycle, check, event_number, x)
elif event_number in cry_num:
check = 1
window.after(500, update, cycle, check, event_number, x)
# make the gif work
def gif_work(cycle, frames, event_number):
if cycle < len(frames) -1:
cycle += 1
else:
cycle = 0
event_number = random.randrange(probality)
return cycle, event_number
def update(cycle, check, event_number, x):
# idle
if check == 0:
frame = idle[cycle]
cycle, event_number = gif_work(cycle, idle, event_number)
# cry
elif check == 1:
frame = cry[cycle]
cycle, event_number = gif_work(cycle, cry, event_number)
window.geometry('842x842+' + str(x // 2) + '+50')
#window.geometry('100x100+' + str(x // 2) + '+930')
label.configure(image=frame)
window.after(1, event, cycle, check, event_number, x)
window = tk.Tk()
# call buddy's action .gif to an array
idle = [tk.PhotoImage(file=impath + 'existerGif.gif', format='gif -index %i' % (i)) for i in range(3)] # idle gif , 4 frames
cry = [tk.PhotoImage(file=impath + 'placeGif.gif' , format='gif -index %i' % (i)) for i in range(8)] # sleep gif, 8 frames
window.config(highlightbackground='white')
label = tk.Label(window)
window.overrideredirect(True)
window.wm_attributes('-transparentcolor','blue')
label.pack()
#loop the program
window.after(1,update,cycle,check,event_number,x)
window.mainloop()
也许这是一个格式问题,我在Photoshop上使用PNG图像进行了gif。
无论如何,如果有人有一个主意,我会很高兴听到它^^ 祝你今天过得愉快!
I'm trying to code a desktop pet in python. For that I mainly used tkinter. I managed to create a window with two gifs which follow one another, but I have an issue with the display of the frames. As you can see in the picture, the black colour became white and sometimes it completely disappeared... In addition, for one of the gifs, two frames appear at the same time, the previous one staying instead of disappearing.
This is my code :
import random
import tkinter as tk
import pyautogui
impath = '.\\Assets\\'
x = 1400
cycle = 0
check = 0
probality=10
idle_num = list(range(0,7))
cry_num = list(range(7,11))
event_number = random.randrange(probality)
#transfer random no. to event
def event(cycle, check, event_number, x):
if event_number in idle_num:
check = 0
print('idle')
window.after(500, update, cycle, check, event_number, x)
elif event_number in cry_num:
check = 1
window.after(500, update, cycle, check, event_number, x)
# make the gif work
def gif_work(cycle, frames, event_number):
if cycle < len(frames) -1:
cycle += 1
else:
cycle = 0
event_number = random.randrange(probality)
return cycle, event_number
def update(cycle, check, event_number, x):
# idle
if check == 0:
frame = idle[cycle]
cycle, event_number = gif_work(cycle, idle, event_number)
# cry
elif check == 1:
frame = cry[cycle]
cycle, event_number = gif_work(cycle, cry, event_number)
window.geometry('842x842+' + str(x // 2) + '+50')
#window.geometry('100x100+' + str(x // 2) + '+930')
label.configure(image=frame)
window.after(1, event, cycle, check, event_number, x)
window = tk.Tk()
# call buddy's action .gif to an array
idle = [tk.PhotoImage(file=impath + 'existerGif.gif', format='gif -index %i' % (i)) for i in range(3)] # idle gif , 4 frames
cry = [tk.PhotoImage(file=impath + 'placeGif.gif' , format='gif -index %i' % (i)) for i in range(8)] # sleep gif, 8 frames
window.config(highlightbackground='white')
label = tk.Label(window)
window.overrideredirect(True)
window.wm_attributes('-transparentcolor','blue')
label.pack()
#loop the program
window.after(1,update,cycle,check,event_number,x)
window.mainloop()
Maybe it's a format problem, I did my gifs on photoshop with png images.
Anyway if someone has an idea I'll be glad to hear it ^^
Have a nice day!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论