Root.mainloop() 然后忽略下面的代码

Root.mainloop() then disregards the code below

我是编码新手,我想创建一个可以让计算机生活更轻松的机器人。我试图在使用 tkinter 时放置一个动画,但是在我将 root.mainloop() 放在 tkinter 代码之后,它忽略了下面的代码。以下示例。

import tkinter as tk
from tkinter import *
import datetime
class ImageLabel(tk.Label):
"""
A Label that displays images, and plays them if they are gifs
:im: A PIL Image instance or astring filename
"""

def load(self, im):
    if isinstance(im, str):
        im = Image.open(im)
    frames = []

    try:
        for i in count(1):
            frames.append(ImageTk.PhotoImage(im.copy()))
            im.seek(i)
    except EOFError:
        pass
    self.frames = cycle(frames)

    try:
        self.delay = im.info['duration']
    except:
        self.delay = 100

    if len(frames) == 1:
        self.config(image=next(self.frames))
    else:
        self.next_frame()

def unload(self):
    self.config(image=None)
    self.frames = None

def next_frame(self):
    if self.frames:
        self.config(image=next(self.frames))
        self.after(self.delay, self.next_frame)

lbl = ImageLabel(root)
lbl.pack()
lbl.load('pyimage1.gif')
root.mainloop()

def WishMe():
hour = int(datetime.datetime.now().hour)
if hour >= 0 and hour < 12:
    speak("Good Morning !")             

elif hour <= 12 and hour < 18:
    speak("Good Afternoon !")

else:
    speak("Good Evening !")

忽略未定义名称和缺少导入的许多问题,您所做的是在主循环之后定义一个函数。这本身就可以了。

但实际上您从来没有调用这个函数。

即使你这样做了,你也只能在定义之后调用它(否则你会得到一个NameError异常)。所以 WishMe 只能 运行 之后 mainloop 退出并且 window 关闭。不清楚这是否是您的意图。