docs/source/documentation/file-directory-selector.rst
The file dialog item can be used to select a single file, multiple files, or a directory. When the user clicks the Ok button, the dialog's callback is run. An optional second callback, to be run when the cancel button is clicked, can be provided as a keyword argument.
When OK is clicked, information is passed through the app_data argument such as:
The simplest case is as a director picker. Below is the example
Code
.. code-block:: python
import dearpygui.dearpygui as dpg
dpg.create_context()
def callback(sender, app_data):
print('OK was clicked.')
print("Sender: ", sender)
print("App Data: ", app_data)
def cancel_callback(sender, app_data):
print('Cancel was clicked.')
print("Sender: ", sender)
print("App Data: ", app_data)
dpg.add_file_dialog(
directory_selector=True, show=False, callback=callback, tag="file_dialog_id",
cancel_callback=cancel_callback, width=700 ,height=400)
with dpg.window(label="Tutorial", width=800, height=300):
dpg.add_button(label="Directory Selector", callback=lambda: dpg.show_item("file_dialog_id"))
dpg.create_viewport(title='Custom Title', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
.. note:: If no file extensions have been added, the selector defaults to directories.
File extensions are items that are added to the file dialog. You can even set the color of the file extensions. Below is a simple example:
.. code-block:: python
import dearpygui.dearpygui as dpg
dpg.create_context()
def callback(sender, app_data, user_data):
print("Sender: ", sender)
print("App Data: ", app_data)
with dpg.file_dialog(directory_selector=False, show=False, callback=callback, id="file_dialog_id", width=700 ,height=400):
dpg.add_file_extension(".*")
dpg.add_file_extension("", color=(150, 255, 150, 255))
dpg.add_file_extension("Source files (*.cpp *.h *.hpp){.cpp,.h,.hpp}", color=(0, 255, 255, 255))
dpg.add_file_extension(".h", color=(255, 0, 255, 255), custom_text="[header]")
dpg.add_file_extension(".py", color=(0, 255, 0, 255), custom_text="[Python]")
with dpg.window(label="Tutorial", width=800, height=300):
dpg.add_button(label="File Selector", callback=lambda: dpg.show_item("file_dialog_id"))
dpg.create_viewport(title='Custom Title', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
File dialogs can be customized with a panel by just adding items to the file dialog as if it were a regular container.
This can allow the creation of a pinned menu, favorites, directory tree, and much more.
Below is an example:
.. code-block:: python
import dearpygui.dearpygui as dpg
dpg.create_context()
def callback(sender, app_data):
print("Sender: ", sender)
print("App Data: ", app_data)
with dpg.file_dialog(directory_selector=False, show=False, callback=callback, tag="file_dialog_tag", width=700 ,height=400):
dpg.add_file_extension(".*")
dpg.add_file_extension("", color=(150, 255, 150, 255))
dpg.add_file_extension(".cpp", color=(255, 255, 0, 255))
dpg.add_file_extension(".h", color=(255, 0, 255, 255))
dpg.add_file_extension(".py", color=(0, 255, 0, 255))
with dpg.group(horizontal=True):
dpg.add_button(label="fancy file dialog")
dpg.add_button(label="file")
dpg.add_button(label="dialog")
dpg.add_date_picker()
with dpg.child_window(height=100):
dpg.add_selectable(label="bookmark 1")
dpg.add_selectable(label="bookmark 2")
dpg.add_selectable(label="bookmark 3")
with dpg.window(label="Tutorial", width=800, height=300):
dpg.add_button(label="File Selector", callback=lambda: dpg.show_item("file_dialog_tag"))
dpg.create_viewport(title='Custom Title', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
You can select multiple files by setting the file_count keyword Must use Ctrl + click to select multiple files Must use Shift + click to select multiple files
.. code-block:: python
import dearpygui.dearpygui as dpg
dpg.create_context()
def callback(sender, app_data):
print("Sender: ", sender)
print("App Data: ", app_data)
with dpg.file_dialog(directory_selector=False, show=False, callback=callback, file_count=3, tag="file_dialog_tag", width=700 ,height=400):
dpg.add_file_extension("", color=(255, 150, 150, 255))
dpg.add_file_extension(".*")
dpg.add_file_extension(".cpp", color=(255, 255, 0, 255))
dpg.add_file_extension(".h", color=(255, 0, 255, 255))
dpg.add_file_extension(".py", color=(0, 255, 0, 255))
dpg.add_button(label="fancy file dialog")
with dpg.child_window(width=100):
dpg.add_selectable(label="bookmark 1")
dpg.add_selectable(label="bookmark 2")
dpg.add_selectable(label="bookmark 3")
with dpg.window(label="Tutorial", width=800, height=300):
dpg.add_button(label="File Selector", callback=lambda: dpg.show_item("file_dialog_tag"))
dpg.create_viewport(title='Custom Title', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()