Tkinter中的Python函数在调试模式下工作,但不会以其他方式调用



在Tkinter中,我制作了函数setstatus:它将输入字符串附加到状态消息列表中,并在列表框中显示消息列表:

root = Tk()
root.geometry("487x680")
Statusbox = Listbox(statusframe, width=75, height=5, selectmode=SINGLE)
Statusbox.grid(row=0, column=0)
root.statusmessages = [""]*10
def setstatus(statmstr):
root.statusmessages[1:] = root.statusmessages[0:-1]
root.statusmessages[0] = statmstr
Statusbox.delete(0, END)  # delete listbox content
i = 0
for item in root.statusmessages:
i += 1
Statusbox.insert(END, item)
setstatus("Wait....")
do_plot()  # creates a plot from matplotlib
setstatus("Plotting done.")
root.mainloop()

当在调试模式下运行它时,它工作正常,所有状态消息都显示在列表框中。但是,当它正常运行时,它只在状态消息列表框中记录第一条消息("等待……"(,第二条消息不会出现。它的原因是什么,如何在Tkinter中解决它?谢谢

解决方案就在这里:用Matplotlib以非阻塞的方式绘图Matplotlib plt.show((以某种方式阻止了我的绘图函数的执行。我在创建绘图图之前插入了plt.ion((。然后Tkinter在绘图完成后执行我的状态消息显示列表框。

相关内容

最新更新