-
-
Save esnyder/83f9d1675ac79982710193f3fe4fd23a to your computer and use it in GitHub Desktop.
pygtk demo of multiple directory chooser
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import gi | |
gi.require_version("Gtk", "3.0") | |
from gi.repository import Gtk | |
class FileChooserWindow(Gtk.Window): | |
def __init__(self): | |
super().__init__(title="FileChooser Example") | |
box = Gtk.Box(spacing=6) | |
self.add(box) | |
button1 = Gtk.Button(label="Choose File") | |
button1.connect("clicked", self.on_file_clicked) | |
box.add(button1) | |
button2 = Gtk.Button(label="Choose Folder") | |
button2.connect("clicked", self.on_folder_clicked) | |
box.add(button2) | |
def on_file_clicked(self, widget): | |
dialog = Gtk.FileChooserDialog( | |
title="Please choose a file", parent=self, action=Gtk.FileChooserAction.OPEN | |
) | |
dialog.add_buttons( | |
Gtk.STOCK_CANCEL, | |
Gtk.ResponseType.CANCEL, | |
Gtk.STOCK_OPEN, | |
Gtk.ResponseType.OK, | |
) | |
self.add_filters(dialog) | |
response = dialog.run() | |
if response == Gtk.ResponseType.OK: | |
print("Open clicked") | |
print("File selected: " + dialog.get_filename()) | |
elif response == Gtk.ResponseType.CANCEL: | |
print("Cancel clicked") | |
dialog.destroy() | |
def add_filters(self, dialog): | |
filter_text = Gtk.FileFilter() | |
filter_text.set_name("Text files") | |
filter_text.add_mime_type("text/plain") | |
dialog.add_filter(filter_text) | |
filter_py = Gtk.FileFilter() | |
filter_py.set_name("Python files") | |
filter_py.add_mime_type("text/x-python") | |
dialog.add_filter(filter_py) | |
filter_any = Gtk.FileFilter() | |
filter_any.set_name("Any files") | |
filter_any.add_pattern("*") | |
dialog.add_filter(filter_any) | |
def on_folder_clicked(self, widget): | |
dialog = Gtk.FileChooserDialog( | |
title="Please choose a folder", | |
parent=self, | |
action=Gtk.FileChooserAction.SELECT_FOLDER, | |
) | |
dialog.add_buttons( | |
Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, "Select", Gtk.ResponseType.OK | |
) | |
dialog.set_default_size(800, 400) | |
response = dialog.run() | |
if response == Gtk.ResponseType.OK: | |
print("Select clicked") | |
print("Folder selected: " + dialog.get_filename()) | |
elif response == Gtk.ResponseType.CANCEL: | |
print("Cancel clicked") | |
dialog.destroy() | |
win = FileChooserWindow() | |
win.connect("destroy", Gtk.main_quit) | |
win.show_all() | |
Gtk.main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment