擅长:python、mysql、java
<p>这个问题似乎是围绕matplotlib小部件报告的大小不正确而引起的。正如<a href="https://stackoverflow.com/a/35979089/1994235">@tcaswell</a>指出的,matplotlib应该被修复,以确保这不会导致segfault。在</p>
<p>我将从另一个方面攻击这个问题,并尝试阻止Qt报告虚假的维度。似乎使用“内置”布局导致了这个问题。这很可能是因为布局的存在是由<code>QMdiSubWindow</code>从<code>QWidget</code>继承的,但是{<cd1>}的实现可能没有正确使用它。只要使用<code>QMdiSubWindow.setWidget()</code>方法并创建自己的布局,就可以避免segfault。在</p>
<p>下面是一些您自己管理布局的示例代码:</p>
<pre><code>p = FigureCanvas(fig)
container = QtGui.QWidget()
layout = QtGui.QVBoxLayout(container)
layout.addWidget(p)
sub.setWidget(container)
</code></pre>
<hr/>
<p><strong>编辑</strong></p>
<p>如果你看一下<a href="https://github.com/qtproject/qtbase/blob/0df5c366e50b9533fd8ea3f31c4c360ae7f4c5b6/src/widgets/widgets/qmdisubwindow.cpp#L2307" rel="nofollow noreferrer">underlying C++ implementation</a>,你会发现调用<code>QMdiSubWindow.setWidget()</code>要比仅仅在布局中添加小部件复杂得多!在</p>