【发布时间】:2015-02-16 05:46:37
【问题描述】:
我有一个使用 PyQt4 和 pyqtgraph 构建的小型应用程序。我想在调用 pyqtgraph 可用的导出器时添加一些按钮(而不是使用当用户右键单击绘图时弹出的上下文菜单)。
然而,到目前为止,我还不能让它工作。
这是应用程序的简化版本:
from PyQt4 import QtCore, QtGui
import pyqtgraph as pg
import pyqtgraph.exporters
import numpy as np
import sys
class SimpleUI(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.resize(1500, 1000)
self.plot_widget = pg.GraphicsLayoutWidget(self)
self.layout = QtGui.QVBoxLayout(self)
data = np.arange(10)
self.plt = self.plot_widget.addPlot()
self.plt.plot(data)
self.export_btn = QtGui.QPushButton("Export")
self.export_btn.clicked.connect(self.export)
self.layout.addWidget(self.plot_widget)
self.layout.addWidget(self.export_btn)
def export(self):
img = pg.exporters.ImageExporter(self.plt)
img.export()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
ex = SimpleUi()
ex.show()
sys.exit(app.exec_())
在这种情况下单击“导出”按钮会导致对话框快速弹出然后消失。
如果我把
img.export(copy=True)
并尝试将剪贴板上的内容粘贴到某些内容(绘画等)中,python.exe 崩溃。
奇怪的是,通过 pyqtgraph 默认可用的上下文菜单导出效果很好。此外,只需在终端中工作,我就可以使用与上面完全相同的代码行来复制/保存 plotItems。即:
import numpy as np
import pyqtgraph as pg
import pyqtgraph.exporters
plt = pg.plot(np.arange(10))
img = pg.exporters.ImageExporter(plt.plotItem)
img.export()
这对我来说意味着导出器工作正常,但是当它们以我调用它们的方式从 pyqt4 小部件中调用时,会发生一些奇怪的交互。
我已经尝试了 pyqtgraph 0.9.8 以及 github 上的主分支。非常不知道这里有什么问题
谢谢
【问题讨论】: