私はPyQt4とmatplotlibを使ってguiを作っています。私はthis非常に有用な質問/私が使用しようとしているタブ付きGUIウィンドウを作成する上での答えを見つけた。すべてがうまくいくように見えます(マイナーな調整がいくつかあります)。しかし、私がメインウィンドウを閉じるたびに、私は "Pythonが予期せず終了する"エラーとセグメンテーション違反を取得します。これはプログラムの動作には影響しませんが、むしろ迷惑で、問題を見つけたいと思います。今exit matplotlibのPyQtセグメンテーションフォルト
、私は以下のMWEに降りで何が起こっていたかを把握しようとしているときに(または最小壊れた例であれば、あなたなります)問題は、ウィンドウにフィギュアのキャンバスを追加しているようだ
import sys
import matplotlib
matplotlib.use('Qt4agg')
import matplotlib.pyplot as plt
import numpy as np
from PyQt4 import QtCore
from PyQt4 import QtGui as qt
if __name__ == "__main__":
fig = plt.figure()
x, y = np.random.randn(2, 40)
ax = fig.add_subplot(111)
ax.plot(x, y, 'o')
ax.hold(False)
app = qt.QApplication(sys.argv)
# ui = MplMultiTab(figures=[fig], labels=["yay"])
ui = qt.QMainWindow()
ui.main_frame = qt.QWidget()
vbox = qt.QVBoxLayout()
vbox.addWidget(fig.canvas)
ui.main_frame.setLayout(vbox)
ui.setCentralWidget(ui.main_frame)
ui.show()
sys.exit(app.exec_())
あたかも私がこれをしない代わりに空のgui(remove vbox.addWidget(fig.canvas)
を削除する)のようにすべてがうまくいき、segfaultはありません。
誰かが間違っているのを見たり、matplotlibやpyqtのバグですか?興味深いことに、に似たGUIを設定した場合、セグメンテーションフォルトはありませんが、実際にはどのような違いがあるのか分かりません。
私はこれをPython 3.5.2で実行しています。これは、OSX 10.11.6でPyTt verion 4.11.4とmatplotlib 1.5.3を使用しています。 PyQt documentationで述べたよう
ありがとうJean-Sebastien。私は実際に私のコードを再編成している間に番号1に偶然出会ったので、今私はなぜ私の問題がなくなったのか知っています。これは素晴らしいと書かれた答えbtwです。 – Andrew