2016-10-19 29 views
0

所以我想用Tkinter做一个小小的战斗场景,代码应该改变图像,等待几秒钟,然后退出Tkinter窗口。当我按下更改图像的按钮时,我刚才的代码稍作停顿。我仍然是一个初学者,一些概念很难理解。 下面是代码:如何在更改图像后退出tkinter窗口?

from tkinter import * 
import time 

class MainWindow(): 

    def __init__(self, main): 

     # canvas for image 
     self.canvas = Canvas(main, width=660, height=440) 
     self.canvas.grid(row=0, column=0) 

     # images 
     self.my_images = [] 
     self.my_images.append(PhotoImage(file = "att1.gif")) 
     self.my_images.append(PhotoImage(file = "att2.gif")) 
     self.my_image_number = 0 
     # set first image on canvas 
     self.image_on_canvas = self.canvas.create_image(0, 0, anchor = NW, image = self.my_images[self.my_image_number]) 

     # button to change image 
     self.button = Button(main, text="FIGHT", command=self.onButton) 
     self.button.grid(row=1, column=0) 

    #---------------- 

    def onButton(self): 

     # next image 
     self.my_image_number = 1 
     if self.my_image_number == 1: 
      time.sleep(2) 
      root.quit() 
     # change image 
     self.canvas.itemconfig(self.image_on_canvas, image = self.my_images[self.my_image_number]) 

root = Tk() 
MainWindow(root) 

root.mainloop() 

一些这个代码是借来的,我试图改变它适合我的目的

+0

什么是一个问题/问题吗?你有错误信息吗?显示有问题? – furas

+0

使用'root.destroy()' – furas

回答

1

图像没有改变,因为time.sleep(2)块Tkinter的更新。睡眠后,tkinter退出,因此图像未更新。

因为你只有2影像和要将图像的变化2秒后退出Tkinter的窗口,尝试:

def onButton(self): 
    self.canvas.itemconfig(self.image_on_canvas, image=self.my_images[1]) 
    root.after(2000, root.destroy) # close root window after 2 seconds