过程PyQt4在pyplot.show()

时间:2017-05-25 08:28:04

标签: macos python-2.7 matplotlib pyqt4

在程序python函数中使用PyQt4和matplotlib时,我在Mac OSX 10.12上遇到了一个奇怪的行为。

该功能弹出一个对话框,用于选择目录。读取此目录中的文件,并使用matplotlib.pyplot绘制其数据。

问题是,当matplotlib显示绘图窗口时,还会在matplotlib窗口后面生成其他空白窗口。只有在我的函数中包含PyQt代码时才会生成这些额外的窗口。

当我关闭matplotlib窗口时,脚本会挂起,如果我关闭其他空白窗口,则函数退出而不执行函数中的剩余代码。

有没有其他人获得这些额外的窗户?我有这种感觉,如果我用它来选择我的目录之后能以某种方式“退出PyQt应用程序循环”,那么这将解决问题。这是我的直觉/猜测,尝试这样做的尝试都失败了。

以下是显示调用plt.show()时弹出的额外窗口的屏幕截图:

enter image description here

这是我的代码:

import os
import sys
from PyQt4.QtGui import *
import numpy as np 
import matplotlib.pyplot as plt   

def qt_mpl_test():

    home = os.path.expanduser('~')
    print('Select data top directory...')
    app = QApplication(sys.argv)
    w = QWidget()
    dat_dir = QFileDialog.getExistingDirectory(w, 'Select data top directory', home)
    dat_dir = str(dat_dir)

    ##  At this stage I load in my data files for processing / plotting
    ##  For the sake of simplicity, generate some data below

    x = np.array([1, 2, 3, 4, 5, 6, 7])
    y = np.array([1, 2, 3, 4, 3, 2, 1])

    fig, ax = plt.subplots(1, 1)

    ax.plot(y, x)

    plt.show()

qt_mpl_test()

0 个答案:

没有答案