استفاده از filedialog

  • مدرس: علی بیگدلی
  • تاریخ انتشار: Nov 12, 2020

ماژول filedialog در رابط tkinterr مجموعه ای از عملیات های منحصر به فرد را به شما ارائه می دهد تا هنگام کار با ابزار های مورد نیاز فایل از آنها استفاده کنید. Tkinter دارای طیف گسترده ای از file dialog مختلف است ، اما موارد موجود در در این ماژول به طور خاص برای انتخاب فایل طراحی شده اند. و همانطور که از صفحات گفتگو انتظار می رود ، این کارها به روشی کاملا کاربرپسند انجام می شود.

در زیر لیستی از تمام گزینه های مختلف dialog های موجود است:

  • .asksaveasfilename()

  • .asksaveasfile()

  • .askopenfilename()

  • .askopenfile()

  • .askdirectory()

  • .askopenfilenames()

  • .askopenfiles()

گزینه های FileDialog

بحث در مورد هر عملکرد به صورت جداگانه بسیار تکراری و زائد خواهد بود زیرا همه آنها از گزینه های یکسانی برخوردار هستند (یک یا دو استثنا). از این رو ما این گزینه ها را در زیر لیست می کنیم و به سادگی نمونه هایی از چندین عملکرد فوق را ارائه می دهیم.

parent - پنجره ای که قرار است گفتگو روی آن قرار گیرد
title - نامی که در گفتگو ظاهر می شود
initialdir - پوشه ای که گفتگو برای اولین بار در آن باز می شود.
initialfile - فایلی که گفتگو هنگام باز شدن انتخاب کرده است.
filetypes - نوع پرونده هایی را که باید در گفتگوها بارگیری یا ذخیره شوند تعیین می کند. به صورت tuple در قالب (Label، Filetype) منتقل شد. همچنین می توانید از کارت وحشی * که برای همه انواع پرونده اعمال می شود استفاده کنید. برای چندین گزینه می توانید چندین تاپل را نیز منتقل کنید.
defaultextension - پسوند پیش فرض که هنگام ضمیمه کردن پرونده ها روی آنها اعمال می شود. (فقط برای ذخیره گفتگوها اعمال می شود)
multiple - در صورت صحت ، امکان انتخاب چند مورد را فراهم می کند.
نکته: بسیاری از این گزینه ها در واقع اختیاری هستند.

 

 بازگردانی آدرس فایل

به گزینه File types که در اینجا ذکر شده توجه کنید. توجه کنید که گزینه انواع پرونده در بالا چگونه گزینه های موجود در رابط کاربری گرافیکی را تحت تأثیر قرار داده است.

from tkinter import *
from tkinter import filedialog 
 
path = filedialog.askopenfilename(initialdir="/", title="Select file",
                    filetypes=(("txt files", "*.txt"),("all files", "*.*")))

هنگامی که فایلی را انتخاب کردید ، مسیر فایل به برنامه پایتون شما بازگردانده می شود تا از آن استفاده کنید. بخاطر بسپارید ، فقط با اینکار می توانید پرونده ها را انتخاب کنید نه پوشه ها.

نکته: اگر می خواهید چندین پرونده را انتخاب کنید ، از عملکرد askopenfilenames استفاده کنید.

 

انتخاب یک فایل

تفاوت بین عملکرد askopenfile و askopenfilename این است که یکی شی File File واقعی را برمی گرداند و دیگری مسیر پرونده را برمی گرداند. در مثال زیر ، این واضح است. جایی که ما یک فایل متنی تصادفی را انتخاب می کنیم و پس از فراخوانی عملکرد خواندن ، خروجی آن را روی صفحه مشاهده می کنیم.

from tkinter import *
from tkinter import filedialog 
 
window = Tk()
 
path = filedialog.askopenfile(initialdir="/", title="Select file",
                    filetypes=(("txt files", "*.txt"),("all files", "*.*")))
print(path.read())
 
window.mainloop()

در زیر متنی که در فایلی که انتخاب کردیم نوشته شده است.

"this is a test for icc-aria.ir tkinter course"

نکته: شکل GUI دقیقاً مشابه عملکرد askopenfilename است. و درست مثل آن ، از askopenfiles می توان برای باز کردن چندین پرونده استفاده کرد.

 

ذخیره یک فایل

از تابع askaveasfile برای ذخیره یک فایل در یک مکان مشخص استفاده می شود. شما می توانید این مکان را از طریق همان GUI انتخابی نشان داده شده در مثالهای بالا انتخاب کنید.

from tkinter import *
from tkinter import filedialog 
 
window = Tk()
 
path = filedialog.asksaveasfile(initialdir="/", title="Save file",
                    filetypes=(("txt files", "*.txt"),("all files", "*.*")))
 
window.mainloop()

به عنوان مثال ، شما می توانید به دسک تاپ بروید و پرونده ای را با نام دلخواه خود در آنجا ذخیره کنید. هنگام ذخیره کردن پرونده ها ، حتماً پسوند را ذکر کنید ، در غیر این صورت از گزینه defaultextension برای اختصاص دادن پسوند به پرونده های خود استفاده کنید.

نکته: تصویر بالا رابط کاربری گرافیکی برای عملکرد askaveasfile را نشان می دهد. بزرگترین تفاوت دکمه Save به جای دکمه Open است.

انتخاب آدرس یک دایرکتوری

این عملکرد دقیقاً مانند عملکرد askopenfilename است ، با این تفاوت که برای انتخاب پرونده ها استفاده نمی شود ، بلکه دایرکتوری ها (پوشه ها) را انتخاب می کند و مسیر پرونده آنها را برمی گرداند.

from tkinter import *
from tkinter import filedialog 
 
window = Tk()
 
path = filedialog.askdirectory(initialdir="/", title="Select file")
print(path)                
 
window.mainloop()

ما پوشه Users را در درایو C انتخاب کردیم و مسیر پرونده زیر بازگردانده شد.

C:/Users

حتما گزینه Filetypes را در اینجا قرار ندهید. به هر حال پوشه ها نوع پرونده ندارند.

ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
0دیدگاه