如何使用 Tkinter 的 asksaveasfile 函数定位生成的绘图进行保存?



如何使用asksaveasfile函数来定位我生成的绘图,以便用户可以输入生成的图的自定义文件名?我还有其他功能设置可以读取数据并生成图,但是我想制作它,以便我在其中完成所有工作的GUI将添加一个窗口,以通过用户输入来保存生成的绘图,而不是我很难 - 编码生成图的名称。

from tkinter import * # all modules imported, most remain unused atm
from tkinter import messagebox
from tkinter import ttk
from tkinter.filedialog import askopenfilename
from tkinter.filedialog import askopenfile
from tkinter.filedialog import asksaveasfile
import numpy as np
import matplotlib.pyplot as plt
from PIL import ImageTk
def UseData():
    data1, data2 = OpenFile()
    plt.figure(1)
    plt.plot(data1, data2)
    plt.title('Variable')
    plt.ylabel('Some Units')
    plt.xlabel('More Units')
    plt.tight_layout()
    result = messagebox.askyesno("Window-1", "Data processed. nWould you like to save the figure?")
    if result== True:
        asksaveasfile(filetypes=(("PNG Image", "*.png"),("All Files", "*.*")), 
            defaultextension='.png', title="Window-2")
        # a = 'picture.png'
        # plt.savefig(a)
        messagebox.showinfo("Window-3", "Plot Saved.") # Conf. message of saving

OpenFile函数在导入我感兴趣的数据非常有用,因此这不必担心。我遇到的问题是我在底部的if语句的一部分,本质上包含A。(我想保存图的方式(通过asksaveasfile命令(和B。(文件名。该命令有没有办法针对已生成并保存它的特定图?如果不是这样,那很好,但是我无法找到一种使它工作的方法。

而不是使用 asksaveasfilename,因为它返回所选/创建文件的路径(如果可能的话,请调用本机GUI,如果不存在,则可以创建文件(。因此,您需要做的就是简单:

a = asksaveasfilename(filetypes=(("PNG Image", "*.png"),("All Files", "*.*")), 
            defaultextension='.png', title="Window-2")
plt.savefig(a)

但是要安全地检查该窗口之后是否有文件名,因为用户可以"取消":

a = asksaveasfilename(filetypes=(("PNG Image", "*.png"),("All Files", "*.*")), 
            defaultextension='.png', title="Window-2")
if a:
    plt.savefig(a)

最新更新