Skip to main content

File browser for Tkinter, alternative to tkinter.filedialog in linux with GTK bookmarks support.

Project description

tkfilebrowser

Latest Release Platform Linux Platform Windows Travis CI Build Status Code coverage License Documentation Status

tkfilebrowser is an alternative to tkinter.filedialog that allows the user to select files or directories. The GUI is written with tkinter but the look is closer to GTK and the application uses GTK bookmarks (the one displayed in nautilus or thunar for instance). This filebrowser supports new directory creation and filtype filtering.

This module contains a general FileBrowser class which implements the filebrowser and the following functions, similar to the one in filedialog:

  • askopenfilename that allow the selection of a single file

  • askopenfilenames that allow the selection of multiple files

  • askopendirname that allow the selection a single folder

  • askopendirnames that allow the selection of multiple folders

  • asksaveasfilename that returns a single filename and give a warning if the file already exists

The documentation is also available here: https://tkfilebrowser.readthedocs.io

Requirements

  • Linux or Windows

  • Python 2.7 or 3.x

And the python packages:

  • tkinter (included in the python distribution for Windows)

  • psutil

  • babel

  • pywin32 (Windows only)

  • pillow (only if tkinter.TkVersion < 8.6)

Installation

  • Ubuntu: use the PPA ppa:j-4321-i/ppa

    $ sudo add-apt-repository ppa:j-4321-i/ppa
    $ sudo apt-get update
    $ sudo apt-get install python(3)-tkfilebrowser
  • Archlinux:

    the package is available on AUR

  • With pip:

    $ pip install tkfilebrowser

Documentation

  • Optional keywords arguments common to each function

    • parent: parent window

    • title: the title of the filebrowser window

    • initialdir: directory whose content is initially displayed

    • initialfile: initially selected item (just the name, not the full path)

    • filetypes list: [(“name”, “*.ext1|*.ext2|..”), …] only the files of given filetype will be displayed, e.g. to allow the user to switch between displaying only PNG or JPG pictures or dispalying all files: filtypes=[(“Pictures”, “*.png|*.PNG|*.jpg|*.JPG’), (“All files”, “*”)]

    • okbuttontext: text displayed on the validate button, if None, the default text corresponding to the mode is used (either “Open” or “Save”)

    • cancelbuttontext: text displayed on the button that cancels the selection.

    • foldercreation: enable the user to create new folders if True (default)

  • askopendirname

    Allow the user to choose a single directory. The absolute path of the chosen directory is returned. If the user cancels, an empty string is returned.

  • askopendirnames

    Allow the user to choose multiple directories. A tuple containing the absolute path of the chosen directories is returned. If the user cancels, an empty tuple is returned.

  • askopenfilename

    Allow the user to choose a single file. The absolute path of the chosen file is returned. If the user cancels, an empty string is returned.

  • askopenfilenames

    Allow the user to choose multiple files. A tuple containing the absolute path of the chosen files is returned. If the user cancels, an empty tuple is returned.

  • asksaveasfilename

    Allow the user to choose a file path. The file may not exist but the path to its directory does. If the file already exists, the user is asked to confirm its replacement.

    Additional option:

    • defaultext: extension added to filename if none is given (default is none)

Changelog

  • tkfilebrowser 2.3.2
    • Show networked drives on Windows

    • Fix click on root button in path bar

  • tkfilebrowser 2.3.1
    • Fix path bar navigation in Linux

  • tkfilebrowser 2.3.0
    • Make package compatible with Windows

    • Set initial focus on entry in save mode

  • tkfilebrowser 2.2.6
    • No longer reset path bar when clicking on a path button

    • Fix bug caused by broken links

  • tkfilebrowser 2.2.5
    • Add compatibility with Tk < 8.6.0 (requires PIL.ImageTk)

    • Add desktop icon in shortcuts

    • Fix handling of spaces in bookmarks

    • Fix bug due to spaces in recent file names

  • tkfilebrowser 2.2.4
    • Fix bug in desktop folder identification

  • tkfilebrowser 2.2.3
    • Fix FileNotFoundError if initialdir does not exist

    • Add Desktop in shortcuts (if found)

    • Improve filetype filtering

  • tkfilebrowser 2.2.2
    • Fix ValueError in after_cancel with Python 3.6.5

  • tkfilebrowser 2.2.1
    • Fix __main__.py for python 2

  • tkfilebrowser 2.2.0
    • Use babel instead of locale in order not to change the locale globally

    • Speed up (a little) folder content display

    • Improve example: add comparison with default dialogs

    • Add select all on Ctrl+A if multiple selection is enabled

    • Disable folder creation button if the user does not have write access

    • Improve extension management in save mode

  • tkfilebrowser 2.1.1
    • Fix error if LOCAL_PATH does not exists or is not writtable

  • tkfilebrowser 2.1.0
    • Add compatibility with tkinter.filedialog keywords ‘master’ and ‘defaultextension’

    • Change look of filetype selector

    • Fix bugs when navigating without displaying hidden files

    • Fix color alternance bug when hiding hidden files

    • Fix setup.py

    • Hide suggestion drop-down when nothing matches anymore

  • tkfilebrowser 2.0.0
    • Change package name to tkfilebrowser to respect PEP 8

    • Display error message when an issue occurs during folder creation

    • Cycle only through folders with key browsing in “opendir” mode

    • Complete only with folder names in “opendir” mode

    • Fix bug: grey/white color alternance not always respected

    • Add __main__.py with an example

    • Add “Recent files” shortcut

    • Make the text of the validate and cancel buttons customizable

    • Add possibility to disable new folder creation

    • Add python 2 support

    • Add horizontal scrollbar

  • tkFileBrowser 1.1.2
    • Add tooltips to display the full path of the shortcut if the mouse stays long enough over it.

    • Fix bug: style of browser treeview applied to parent

  • tkFileBrowser 1.1.1
    • Fix bug: key browsing did not work with capital letters

    • Add specific icons for symlinks

    • Add handling of symlinks, the real path is returned instead of the link path

  • tkFileBrowser 1.1.0
    • Fix bug concerning the initialfile argument

    • Add column sorting (by name, size, modification date)

  • tkFileBrowser 1.0.1
    • Set default filebrowser parent to None as for the usual filedialogs and messageboxes.

  • tkFileBrowser 1.0.0
    • Initial version

Example

try:
    import tkinter as tk
    import tkinter.ttk as ttk
    from tkinter import filedialog
except ImportError:
    import Tkinter as tk
    import ttk
    import tkFileDialog as filedialog
from tkfilebrowser import askopendirname, askopenfilenames, asksaveasfilename


root = tk.Tk()

style = ttk.Style(root)
style.theme_use("clam")


def c_open_file_old():
    rep = filedialog.askopenfilenames(parent=root, initialdir='/', initialfile='tmp',
                                      filetypes=[("PNG", "*.png"), ("JPEG", "*.jpg"), ("All files", "*")])
    print(rep)


def c_open_dir_old():
    rep = filedialog.askdirectory(parent=root, initialdir='/tmp')
    print(rep)


def c_save_old():
    rep = filedialog.asksaveasfilename(parent=root, defaultextension=".png", initialdir='/tmp', initialfile='image.png',
                                       filetypes=[("PNG", "*.png"), ("JPEG", "*.jpg"), ("All files", "*")])
    print(rep)


def c_open_file():
    rep = askopenfilenames(parent=root, initialdir='/', initialfile='tmp',
                           filetypes=[("Pictures", "*.png|*.jpg|*.JPG"), ("All files", "*")])
    print(rep)


def c_open_dir():
    rep = askopendirname(parent=root, initialdir='/', initialfile='tmp')
    print(rep)


def c_save():
    rep = asksaveasfilename(parent=root, defaultext=".png", initialdir='/tmp', initialfile='image.png',
                            filetypes=[("Pictures", "*.png|*.jpg|*.JPG"), ("All files", "*")])
    print(rep)


ttk.Label(root, text='Default dialogs').grid(row=0, column=0, padx=4, pady=4, sticky='ew')
ttk.Label(root, text='tkfilebrowser dialogs').grid(row=0, column=1, padx=4, pady=4, sticky='ew')
ttk.Button(root, text="Open files", command=c_open_file_old).grid(row=1, column=0, padx=4, pady=4, sticky='ew')
ttk.Button(root, text="Open folder", command=c_open_dir_old).grid(row=2, column=0, padx=4, pady=4, sticky='ew')
ttk.Button(root, text="Save file", command=c_save_old).grid(row=3, column=0, padx=4, pady=4, sticky='ew')
ttk.Button(root, text="Open files", command=c_open_file).grid(row=1, column=1, padx=4, pady=4, sticky='ew')
ttk.Button(root, text="Open folder", command=c_open_dir).grid(row=2, column=1, padx=4, pady=4, sticky='ew')
ttk.Button(root, text="Save file", command=c_save).grid(row=3, column=1, padx=4, pady=4, sticky='ew')

root.mainloop()

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

tkfilebrowser-2.3.2.tar.gz (53.0 kB view details)

Uploaded Source

Built Distributions

tkfilebrowser-2.3.2-py3.7.egg (44.8 kB view details)

Uploaded Source

tkfilebrowser-2.3.2-py3-none-any.whl (57.8 kB view details)

Uploaded Python 3

tkfilebrowser-2.3.2-py2.7.egg (44.8 kB view details)

Uploaded Source

tkfilebrowser-2.3.2-py2-none-any.whl (57.8 kB view details)

Uploaded Python 2

File details

Details for the file tkfilebrowser-2.3.2.tar.gz.

File metadata

  • Download URL: tkfilebrowser-2.3.2.tar.gz
  • Upload date:
  • Size: 53.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.4

File hashes

Hashes for tkfilebrowser-2.3.2.tar.gz
Algorithm Hash digest
SHA256 5dbc057ca322594620c1371d490b827b39aa5b7dbee79cdf49bb7169914f5be0
MD5 2d110d1044d975b6a96e25209a3399b2
BLAKE2b-256 b2516bcb50456b7371fbf6d8e9443a6ef60b641729255dc9298da15ef51b1ae8

See more details on using hashes here.

File details

Details for the file tkfilebrowser-2.3.2-py3.7.egg.

File metadata

  • Download URL: tkfilebrowser-2.3.2-py3.7.egg
  • Upload date:
  • Size: 44.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.4

File hashes

Hashes for tkfilebrowser-2.3.2-py3.7.egg
Algorithm Hash digest
SHA256 fa3ec9a4d0415da7591a177275b5e98bbd4949db2794cb97e5600ca83528b831
MD5 94df59d67a86a5a73e257e5b75c7dae3
BLAKE2b-256 49b6929ca115ee3941cd9724980d5e7735302e9dd128e1a584082f097248d84a

See more details on using hashes here.

File details

Details for the file tkfilebrowser-2.3.2-py3-none-any.whl.

File metadata

  • Download URL: tkfilebrowser-2.3.2-py3-none-any.whl
  • Upload date:
  • Size: 57.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.4

File hashes

Hashes for tkfilebrowser-2.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ee1062ea7e871f1e15922c119206ee798600bb6411b2a3bff5e8153e6f037e65
MD5 4fb4a95b6ac90c58d1afe110dc5ce744
BLAKE2b-256 6f9a010f765cd212f9ca39352b668681851023e73d6882736c5d7004aca5371d

See more details on using hashes here.

File details

Details for the file tkfilebrowser-2.3.2-py2.7.egg.

File metadata

  • Download URL: tkfilebrowser-2.3.2-py2.7.egg
  • Upload date:
  • Size: 44.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.4

File hashes

Hashes for tkfilebrowser-2.3.2-py2.7.egg
Algorithm Hash digest
SHA256 bb073729bf0f316de501d28058195d39acef912f3606415e151cf73be83e5e43
MD5 03309b1a98e51371f1baeba5dafc2f50
BLAKE2b-256 993fc35a47e03ca1c05037c672e04dca64b3e3271671bb3bb5e3b043cb541519

See more details on using hashes here.

File details

Details for the file tkfilebrowser-2.3.2-py2-none-any.whl.

File metadata

  • Download URL: tkfilebrowser-2.3.2-py2-none-any.whl
  • Upload date:
  • Size: 57.8 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.4

File hashes

Hashes for tkfilebrowser-2.3.2-py2-none-any.whl
Algorithm Hash digest
SHA256 6edd43fdbe238f12b3be8b48e118642d72b68c37b6ff6f7463c5ba15b3991adb
MD5 cadaab12c285eefa58c1b2d8def81190
BLAKE2b-256 9e3451e552f19b454240a0ed3dcfc9c8e08ef04fdcf84ff9431a35982d03dfa7

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