如何通过tkinter画布按钮以编程方式退出mainloop

时间:2017-08-14 14:51:12

标签: python-3.x canvas tkinter tkinter-canvas

我的程序一次生成一个图表,每个图表都有一个退出按钮。 程序在root.quit()暂停,直到我按下按钮,然后生成下一个图表。

我想要一种以编程方式按下或调用与该按钮关联的操作的方法,在本例中为invoke()

我尝试在按钮上调用mainloop,但这不起作用。我的感觉是在from tkinter import * pause = False # passed in as an arg root = Tk() root.title(name) canvas = Canvas(root, width=canvas_width, height=canvas_height, bg = 'white') canvas.pack() quit = Button(root, text='Quit', command=root.quit) quit.pack() # make sure everything is drawn canvas.update() if not pause: # Invoke the button event so we can draw the next graph or exit quit.invoke() root.mainloop() 开始之前事件已经丢失。

contentOffset

1 个答案:

答案 0 :(得分:1)

我意识到问题在于事件丢失和mainloop阻止,因此我使用pause arg来确定何时运行mainloop,即在最后一个图表上。

请参阅Tkinter understanding mainloop

显示所有图表,当您在任何窗口上按退出时,所有窗口都会消失,程序结束。

如果有更好的方法,请告诉我,但这有效。

root = Tk()
root.title(name) # name passed in as an arg

# Creation of the canvas and elements moved into another function
draw( root, ... )

if not pause:
    root.update_idletasks()
    root.update()
else:
    mainloop()