ert*_*thy 3 python qt matplotlib python-3.x pyqt5
我正在用 Python 3.5 和 PyQT 5 编写一个应用程序。在这个应用程序中,我有一个嵌入式 matplotlib 画布和一个嵌入式 matplotlib NavigationToolbar。应用程序测量一些数据,然后绘制它们。用户在某个时候想要导出绘图并将其保存到某个地方的“.png”文件中,然后测量一些新的东西。
为此,我一直在使用导航工具栏上的“软盘”/“保存”图标,它运行良好。但是,当我单击它时,它会在程序的根文件夹(或上次打开的文件夹)中打开一个对话框,并将保存的图像的名称预填充为“image.png”。
我想将此预填充的默认名称更改为我的程序自定义的名称,例如“measurement_7453243.png”或“2017_01_16_measurement.png”。有没有办法让我这样做?
想法#1:我发现可以选择使用 matplotlib.rcParams['savefig.directory'] 并使用它来设置应该打开对话框的目录 - 虽然不是文件名。我似乎找不到可以更改默认文件名的“savefig.XXXX”属性。
想法#2:我可以在我的应用程序中的 NavigationToolbar 之外创建一个自定义按钮,它将使用 Qt 运行一个自定义文件保存对话框,然后使用 savefig() 来保存图形。但是,如果已经有一个很好的按钮几乎可以满足我的要求,为什么还要这样做呢?
任何提示和想法,以及“这不能做”与适当的来源将不胜感激。
不确定你是否总是可以这样做,但在我的情况下,图形实例有一个画布属性,我可以按照Goyo 的建议进行monkeypatch 。
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()
Run Code Online (Sandbox Code Playgroud)