这应该足够你想要做的事情了。然后,我会创建自己的动画或从互联网逐帧下载要显示的图像。Canvas更多用于与用户的交互,这就是为什么我使用标签来显示图像的原因...
import tkinter as tk
class Activity(tk.Label):
def __init__(self, master = None, delay = 1000, cnf = {}, **kw):
self._taskID = None
self.delay = delay
return super().__init__(master, cnf, **kw)
def start(self):
self.after(0, self._loop)
def _loop(self):
currentText = self["text"] + "."
if currentText == "....":
currentText = ""
self["text"] = currentText
self._taskID = self.after(self.delay, self._loop)
def stop(self):
self.after_cancel(self._taskID)
self.destroy()
class AcitivityImage(Activity):
def __init__(self, imagename, frames, filetype, master = None, delay = 1000, cnf = {}, **kw):
self._frames = []
self._index = 0
for i in range(frames):
self._frames.append(tk.PhotoImage(file = imagename+str(i)+'.'+str(filetype)))
return super().__init__(master, delay, cnf, **kw)
def _loop(self):
self["image"] = self._frames[self._index]
self._index = (self._index + 1 )% len(self._frames)
self._taskID = self.after(self.delay, self._loop)
root = tk.Tk()
root.geometry("500x500")
root.a = Activity(root, 500, bg = "yellow")
root.a.pack()
root.a.start()
root.after(7000, root.a.stop)
root.mainloop().
Canvas
或Label
显示图像,但是你需要自己制作动画(使用root.after
)。 - furasAppKit
/Cocoa
。有没有办法将AppKit
的小部件和Tkinter
的小部件混合使用?我曾经认为这是不可能的。 - ArtOfWarfare