如何解决在PySimpleGUI界面中显示阻塞图后,代码被卡住
我试图在分析过程中显示一个图,该图应该一直阻塞直到关闭图为止,然后代码才能继续。我正在一起使用PySimpleGUI和matplotlib,但没有将绘图嵌入到GUI中。
import PySimpleGUI as sg
import matplotlib
matplotlib.use('tkagg')
import matplotlib.pyplot as plt
import numpy as np
def foo():
x = np.linspace(0,2,100)
plt.plot(x,x ** 2,label='quadratic')
plt.show()
def bar():
print('plot closed')
################################
layout = [ [sg.Text('test')],[sg.Button('Ok'),sg.Button('Cancel')] ]
# Create the Window
window = sg.Window('Window Title',layout)
# Event Loop to process "events" and get the "values" of the inputs
while True:
event,values = window.read()
if event == sg.WIN_CLOSED or event == 'Cancel':
break
if event == 'Ok':
foo()
bar()
window.close()
我在matplotlib和Tk版本的PySimpleGUI中使用了TkAGG后端,否则它们将不能很好地相处。当没有GUI时,该功能将按预期工作-关闭绘图后,代码将继续。但是,在上面显示的状态下,它停留在foo()
函数中,而GUI没有冻结。因此,我对问题的根源感到困惑。
我尝试了一些建议,例如使用plt.pause(0.1)
或plt.ion()
,但这些建议并没有给我确切的答案。我当前的解决方法是使用plt.show(block=False)
并显示阻止弹出窗口,但是必须有一种“正确”的方法来解决此问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。