Skip to main content
 首页 » 编程设计

python之在 Python 中退出 Tks 主循环

2025年05月04日12hnrainll

我正在用 Tkinter 编写幻灯片程序,但我不知道如何在不绑定(bind)键的情况下转到下一张图片。

import os, sys 
import Tkinter 
import Image, ImageTk 
import time 
 
root = Tkinter.Tk() 
w, h = root.winfo_screenwidth(), root.winfo_screenheight() 
root.overrideredirect(1) 
root.geometry("%dx%d+0+0" % (w, h)) 
root.focus_set() 
 
root.bind("<Escape>", lambda e: e.widget.quit()) 
 
image_path = os.path.join(os.getcwd(), 'images/') 
dirlist = os.listdir(image_path) 
 
for f in dirlist: 
    try: 
        image = Image.open(image_path+f) 
        tkpi = ImageTk.PhotoImage(image)         
        label_image = Tkinter.Label(root, image=tkpi) # ? 
        label_image.place(x=0,y=0,width=w,height=h) 
        root.mainloop(0) 
    except IOError: 
        pass 
root.destroy() 

我想添加一个 time.sleep(10)“代替”root.mainloop(0),这样它会在 10 秒后转到下一张图像。现在当我按 ESC 时它会改变。我怎样才能在那里设置计时器?

编辑:我应该补充一点,我不希望另一个线程即使在工作时也会休眠。

请您参考如下方法:

你可以试试

root.after(10*1000, root.quit)