python - 如何在 PyQt5 应用程序中更改 Matplotlib NavigationToolbar 的默认文件名?

标签 python qt python-3.x matplotlib pyqt5

我正在用 Python 3.5 和 PyQT 5 编写一个应用程序。在这个应用程序中,我有一个嵌入式 matplotlib Canvas 和一个嵌入式 matplotlib NavigationToolbar。该应用程序测量一些数据,然后绘制它们。用户有时想要导出绘图并将其保存到某处的“.png”文件中,然后测量新的东西。

为此,我一直在使用 NavigationToolbar 上的“floppy”/“save”图标,效果很好。但是,当我单击它时,它会在程序的根文件夹(或上次打开的文件夹)中打开一个对话框,并将保存图像的名称预填为“image.png”。

我想将这个预填充的默认名称更改为我的程序自定义的名称,例如“measurement_7453243.png”或“2017_01_16_measurement.png”。有什么方法可以让我这样做吗?

想法 #1:我发现的是使用 matplotlib.rcParams['savefig.directory'] 的选项,并使用它来设置应该打开对话框的目录 - 但不是文件名。我似乎找不到可以更改默认文件名的“savefig.XXXX”属性。

想法 #2:我可以在 NavigationToolbar 之外的我的应用程序中创建一个自定义按钮,这将使用 Qt 运行一个自定义文件保存对话框,然后使用 savefig() 来保存图形。但是,如果已经有一个漂亮的按钮几乎可以满足我的要求,为什么还要这样做呢?

我们将不胜感激任何提示和想法,以及“这是不可能完成的”和适当的来源。

最佳答案

不确定你是否总是可以这样做,但在我的例子中,图形实例有一个 canvas 属性,我可以将其 monkeypatch 为 Goyo建议。

import matplotlib.pyplot as plt
f = plt.figure()
c = f.canvas
my_adventurous_filename = 'figure-III' # irony
c.get_default_filename = lambda : '%s.%s' % (my_adventurous_filename,
                                             c.get_default_filetype())
plt.show()

关于python - 如何在 PyQt5 应用程序中更改 Matplotlib NavigationToolbar 的默认文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41680007/

相关文章:

python - Linux Nagios 检查问题 : MongoDB check_mongodb. py

Qt 4.8,Visual Studio 2013 编译错误

python - os.chdir() 导致 python 多线程出现意外行为

python - 在条件下在python中选择数组

python - 如何从 webdriver 访问 Firefox 缓存?

python - 正则表达式选择 HTML 标签内的特定字符

c++ - Qml与C++交互: return by pointer or by copy

c++ - 使用 QComboBox 后 QGraphicsItem 失去焦点

python - 以 Python2 和 Python3 兼容的方式舍入 float 并将其转换为整数

python - 从鼠标单击事件获取行和列