#python #python-3.x #tkinter
#python #python-3.x #tkinter
Вопрос:
Я хочу создать кнопку для сохранения изображения по адресу, который мне дает address_txt, но проблема в том, что address_txt не дает мне выбранный формат, у него просто есть имя. как я могу получить выбранный формат?
import tkinter
from tkinter import *
from tkinter import messagebox
from tkinter import filedialog
from PIL import ImageTk, Image
import PIL
from tkinter import ttk
root = Tk()
def save_1():
address_txt = filedialog.asksaveasfilename(title="save",filetypes = (("All files","*"),("PNG file","*.png"),("JPG file","*.jpg"),("GIF file","*.gif")))
print(address_txt)
btn_save = Button(root, text="Save",bg = "light blue",
font=("Times New Roman", 17), command=save_1)
btn_save.pack()
root.mainloop()
Комментарии:
1. Вы можете получить расширение файла из значения, возвращаемого из
asksaveasfilename()
с помощьюimage_format = os.path.splitext(address_txt)[1]
.2.
Image.save(filename)
определит формат вывода на основе переданного ему расширения файлаfilename
.
Ответ №1:
Попробуйте передать typevariable
в filedialog.asksaveasfilename
.Пример ниже:
from tkinter import *
from tkinter import filedialog
root = Tk()
def save_1():
address_txt = filedialog.asksaveasfilename(title="save",filetypes = (("Alls","*"),("png","*.png"),("jpg","*.jpg"),("gif","*.gif")), typevariable=extension_name)
print("The path is:", address_txt)
print("The extension is:", extension_name.get())
extension_name = StringVar()
btn_save = Button(root, text="Save",bg = "light blue",
font=("Times New Roman", 17), command=save_1)
btn_save.pack()
root.mainloop()
Ответ №2:
если вы знаете расширение, вы можете использовать параметр defaultextension:
file = filedialog.asksaveasfile(mode='w', defaultextension=".png", filetypes=(("PNG file", "*.png"),("All Files", "*.*") ))
Комментарии:
1. если я знаю расширение, я могу добавить формат в конец строки