Skip to main content

Python file chooser widget for use in Jupyter/IPython in conjunction with ipywidgets

Project description

ipyfilechooser

A simple Python file chooser widget for use in Jupyter/IPython in conjunction with ipywidgets. The selected path and file are available via .selected_path and .selected_filename respectvely or as a single combined filepath via .selected. The dialog can be reset to its default path and filename by using .reset().

When a typed filename matches an existing file entry in the current folder the entry will be highlighted. If a typed filename matches a folder entry in the current view the selection button is disabled ensure the user is aware of the match. To select a folder simply leave the filename field empty.

To emphasize the risk of overwriting existing files, the selected filepath is displayed in green if the file does not exist and orange if it does.

Downloads

Usage

from ipyfilechooser import FileChooser

# Create and display a FileChooser widget
fc = FileChooser('/Users/crahan/FC demo')
display(fc)

# Print the selected path, filename, or both
print(fc.selected_path)
print(fc.selected_filename)
print(fc.selected)

# Change defaults and reset the dialog
fc.default_path = '/Users/crahan/'
fc.default_filename = 'output.txt'
fc.reset()

# Shorthand reset
fc.reset(path='/Users/crahan/', filename='output.txt')

# Change hidden files
fc.show_hidden = True

# Show or hide folder icons
fc.use_dir_icons = True

# Switch to folder-only mode
fc.show_only_dirs = True

# Set a file filter pattern (uses https://docs.python.org/3/library/fnmatch.html)
fc.filter_pattern = '*.txt'

# Set multiple file filter patterns (uses https://docs.python.org/3/library/fnmatch.html)
fc.filter_pattern = ['*.jpg', '*.png']

# Change the title (use '' to hide)
fc.title = '<b>FileChooser title</b>'

# Sample callback function
def change_title(chooser):
    chooser.title = '<b>Callback function executed</b>'

# Register callback function
fc.register_callback(change_title)

Functions and properties

fc.reset()
fc.refresh()
fc.register_callback(function_name)
fc.show_hidden
fc.use_dir_icons
fc.show_only_dirs
fc.rows
fc.title
fc.filter_pattern
fc.default
fc.default_path
fc.default_filename
fc.value
fc.selected
fc.selected_path
fc.selected_filename

Screenshots

Closed vs open dialog

Screenshot 1

Screenshot 2

Existing vs new file selection

Screenshot 3

Screenshot 4

Quick navigation dropdown

Screenshot 5

Use folder icons

Screenshot 6

Release notes

0.5.0

  • Widget width is now configurable using the layout property and a Layout object
  • Folder paths are now normalized using os.path.normpath to properly handle '/' and '\' on Windows
  • The widget now supports the value property to align with other widget types
  • The label showing the selected value now reflows the text to new lines as required (and shows a scrollbar if the value is too long)
  • Buttons now have a minimum width to ensure their text is always visible, regardless of widget width

0.4.4

  • Added typing hints (@Mandroide)
  • Updated max line length check from 90 to 120 characters
  • Fixed filter_pattern values not being treated as case-insensitive
  • General code cleanup

0.4.3

  • Prevent applying the selected value if the filename doesn't match one of the filter_pattern values

0.4.2

  • Added ability to specify a list of fnmatch pattern strings for filter_pattern

0.4.1

  • Fixed issue with select_default not being applied on reset

0.4.0

  • Option added to specify a file filter (@andriykorchak)
  • Add support for ValueWidget and get_interact_value()
  • Updated sample notebook with filter example
  • Updated Development Status to Production/Stable

0.3.5

  • Option added to only display folders (@andriykorchak)

0.3.4

  • Option added to display folder icons (@ptooley)

0.3.3

  • Option added to add self as an argument to the callback function (@ptooley)

0.3.2

  • Return None if file is not selected (@danjjl)

0.3.1

  • Option to register a callback function (register_callback(function_name))

0.3.0

  • Ability to select a folder
  • Support for Windows drive letters
  • Option to use the defaults as the selected value

0.2.0

  • First public release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ipyfilechooser-0.5.0.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

ipyfilechooser-0.5.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file ipyfilechooser-0.5.0.tar.gz.

File metadata

  • Download URL: ipyfilechooser-0.5.0.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.3

File hashes

Hashes for ipyfilechooser-0.5.0.tar.gz
Algorithm Hash digest
SHA256 17bd649028bd2cc524a14c2e571ac8130d3f2fdf11ab6400f79330c5e632c88b
MD5 348d0b4b5234bea9fa0cf61ee2460b75
BLAKE2b-256 81570ee4da2409b1de5a5f19e9b8571ba99c361427aa8e6478931c4eb2b5ddd1

See more details on using hashes here.

File details

Details for the file ipyfilechooser-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: ipyfilechooser-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.3

File hashes

Hashes for ipyfilechooser-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 27c2747e7f61529b6f2b63a82f37af7ac57b3f0c7a0b65acf10fd4fed281a472
MD5 7f7193d4e4f9b0826a24cdc07a1ed208
BLAKE2b-256 76695b955c85d28c67c2d88e540c6aa59dddee2fab3e4ad15a1402ebf0b8ae8c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page