[Python] How to fix Gtk.FileChooserDialogue height and resizing issues?

Discussão em 'Python' iniciado por Stack, Agosto 20, 2025.

  1. Stack

    Stack Membro Participativo

    I am experiencing a strange phenomenon with the Gtk.FileChooserDialogue widget (Gtk3).


    1. I can't get it to appear at the correct height. Output state height is 500px but its height is definitely much larger. Screen height is 1080px. This widget is almost reaching to the bottom of screen.


    2. When manually resizing it with the mouse pointer, it uncontrollably shrunk to a very small size, get stuck to the top of the screen and I think it is just showing one of its child widget instead of the entire widget.

    These issues are shown below. What am I doing wrong and how to fix them?

    Running on Ubuntu 24.04.3. GNOME shell version is 46.

    Video of Issues:

    [​IMG]

    Sample Code:

    import sys

    import gi

    gi.require_version("Gtk", "3.0")
    from gi.repository import GLib, Gtk # noqa: E402


    class Chooser(Gtk.FileChooserDialog):
    def __init__(self, title=None, parent=None):
    super().__init__(
    title=title,
    parent=parent,
    action=Gtk.FileChooserAction.OPEN,
    default_height=500, # I tried initializing its height to 500px
    )
    self.set_default_size(-1, 500) # I tried setting automatic height to 500px
    self.set_size_request(-1, 300) # I tried setting minimum height to 300px
    self.add_buttons(
    Gtk.STOCK_CANCEL,
    Gtk.ResponseType.CANCEL,
    Gtk.STOCK_OPEN,
    Gtk.ResponseType.OK,
    )
    print(f"{self.props.resizable=}")
    print(f"{self.props.resize_mode=}")
    print(f"{self.props.default_height=}")
    self.add_filters()
    self.run_self()

    def add_filters(self):
    filter_txt = Gtk.FileFilter()
    filter_txt.set_name(".txt files")
    filter_txt.add_mime_type("text")
    self.add_filter(filter_txt)

    def run_self(self):
    response = self.run()
    self.destroy()


    class App(Gtk.Application):
    def __init__(self):
    super().__init__(application_id="com.gnome.test")
    GLib.set_application_name("test")

    def do_activate(self):
    self.window = Gtk.ApplicationWindow(application=self, title="App")
    # Create a grid container
    self.grid = Gtk.Grid()
    self.window.add(self.grid)
    # Create Buttons
    self.btn = Gtk.Button(label="From")
    # Display buttons
    self.grid.attach(self.btn, 0, 0, 1, 1)
    self.grid.set_row_homogeneous(True)
    self.grid.set_column_homogeneous(True)
    # Connect Button to handler
    self.btn.connect("clicked", self.get_file)
    # Set Size
    self.window.set_default_size(width=500, height=34)
    # Show all widgets
    self.window.show_all()

    def get_file(self, widget):
    print("Chooser")
    chooser = Chooser(title="Chooser", parent=self.window)
    chooser.set_default_size(-1, 400)


    app = App()
    exit_status = app.run(sys.argv)
    sys.exit(exit_status)


    VS Code Output:

    Chooser
    self.props.resizable=True
    self.props.resize_mode=<enum GTK_RESIZE_QUEUE of type Gtk.ResizeMode>
    self.props.default_height=500


    GTK Info:

    $ dpkg -l | grep GTK
    ii apport-gtk 2.28.1-0ubuntu3.8 all GTK+ frontend for the apport crash report system
    ii gir1.2-gnomebg-4.0:amd64 44.0-5build2 amd64 Introspection data for GnomeBG (GTK 4)
    ii gir1.2-gnomedesktop-3.0:amd64 44.0-5build2 amd64 Introspection data for GnomeDesktop (GTK 3)
    ii gir1.2-gnomedesktop-4.0:amd64 44.0-5build2 amd64 Introspection data for GnomeDesktop (GTK 4)
    ii gir1.2-gtk-3.0:amd64 3.24.41-4ubuntu1.3 amd64 GTK graphical user interface library -- gir bindings
    ii gir1.2-gtk-4.0:amd64 4.14.5+ds-0ubuntu0.4 amd64 GTK graphical user interface library -- gir bindings
    ii gir1.2-gtksource-5:amd64 5.12.0-1build1 amd64 gir files for the GTK+ syntax highlighting widget
    ii gir1.2-javascriptcoregtk-4.1:amd64 2.48.5-0ubuntu0.24.04.1 amd64 JavaScript engine library from WebKitGTK - GObject introspection data
    ii gir1.2-javascriptcoregtk-6.0:amd64 2.48.5-0ubuntu0.24.04.1 amd64 JavaScript engine library from WebKitGTK - GObject introspection data
    ii gir1.2-webkit-6.0:amd64 2.48.5-0ubuntu0.24.04.1 amd64 Web content engine library for GTK - GObject introspection data
    ii gir1.2-webkit2-4.1:amd64 2.48.5-0ubuntu0.24.04.1 amd64 Web content engine library for GTK - GObject introspection data
    ii gnome-accessibility-themes 3.28-2ubuntu5 all High Contrast GTK 2 theme and icons
    ii gnome-themes-extra:amd64 3.28-2ubuntu5 amd64 Adwaita GTK 2 theme — engine
    ii gnome-themes-extra-data 3.28-2ubuntu5 all Adwaita GTK 2 theme and Adwaita-dark GTK 3 theme — common files
    ii gstreamer1.0-gtk3:amd64 1.24.2-1ubuntu1.1 amd64 GStreamer plugin for GTK+3
    ii gtk2-engines-pixbuf:amd64 2.24.33-4ubuntu1.1 amd64 pixbuf-based theme for GTK 2
    ii ibus-gtk:amd64 1.5.29-2 amd64 Intelligent Input Bus - GTK2 support
    ii ibus-gtk3:amd64 1.5.29-2 amd64 Intelligent Input Bus - GTK3 support
    ii ibus-gtk4:amd64 1.5.29-2 amd64 Intelligent Input Bus - GTK4 support
    ii libadwaita-1-0:amd64 1.5.0-1ubuntu2 amd64 Library with GTK widgets for mobile phones
    ii libavahi-ui-gtk3-0:amd64 0.8-13ubuntu6 amd64 Avahi GTK+ User interface library for GTK3
    ii libayatana-appindicator3-1 0.5.93-1build3 amd64 Ayatana Application Indicators (GTK-3+ version)
    ii libayatana-indicator3-7:amd64 0.9.4-1build1 amd64 panel indicator applet - shared library (GTK-3+ variant)
    ii libcanberra-gtk-module:amd64 0.30-10ubuntu10 amd64 translates GTK+ widgets signals to event sounds
    ii libcanberra-gtk0:amd64 0.30-10ubuntu10 amd64 GTK+ helper for playing widget event sounds with libcanberra
    ii libcanberra-gtk3-0t64:amd64 0.30-10ubuntu10 amd64 GTK+ 3.0 helper for playing widget event sounds with libcanberra
    ii libcanberra-gtk3-module:amd64 0.30-10ubuntu10 amd64 translates GTK3 widgets signals to event sounds
    ii libcolord-gtk4-1t64:amd64 0.3.1-1build2 amd64 GTK4 convenience library for interacting with colord
    ii libdbusmenu-gtk3-4:amd64 18.10.20180917~bzr492+repack1-3.1ubuntu5 amd64 library for passing menus over DBus - GTK-3+ version
    ii libdecor-0-plugin-1-gtk:amd64 0.2.2-1build2 amd64 libdecor decoration plugin using GTK
    ii libedataserverui4-1.0-0t64:amd64 3.52.3-0ubuntu1 amd64 GTK4 utility library for evolution data servers
    ii libgnome-desktop-3-20t64:amd64 44.0-5build2 amd64 Utility library for the GNOME desktop - GTK 3 version
    ii libgspell-1-2:amd64 1.12.2-1build4 amd64 spell-checking library for GTK+ applications
    ii libgtk-3-0t64:amd64 3.24.41-4ubuntu1.3 amd64 GTK graphical user interface library
    ii libgtk-3-bin 3.24.41-4ubuntu1.3 amd64 programs for the GTK graphical user interface library
    ii libgtk-3-common 3.24.41-4ubuntu1.3 all common files for the GTK graphical user interface library
    ii libgtk-4-1:amd64 4.14.5+ds-0ubuntu0.4 amd64 GTK graphical user interface library
    ii libgtk-4-bin 4.14.5+ds-0ubuntu0.4 amd64 programs for the GTK graphical user interface library
    ii libgtk-4-common 4.14.5+ds-0ubuntu0.4 all common files for the GTK graphical user interface library
    ii libgtk-4-dev:amd64 4.14.5+ds-0ubuntu0.4 amd64 development files for the GTK library
    ii libgtk-4-media-gstreamer 4.14.5+ds-0ubuntu0.4 amd64 GStreamer media backend for the GTK graphical user interface library
    ii libgtk2.0-0t64:amd64 2.24.33-4ubuntu1.1 amd64 GTK graphical user interface library - old version
    ii libgtk2.0-bin 2.24.33-4ubuntu1.1 amd64 programs for the GTK graphical user interface library
    ii libgtk2.0-common 2.24.33-4ubuntu1.1 all common files for the GTK graphical user interface library
    ii libgtk3-perl 0.038-3 all Perl bindings for the GTK+ graphical user interface library
    ii libgtkmm-4.0-0:amd64 4.10.0-4build3 amd64 C++ wrappers for GTK4 (shared libraries)
    ii libgtkmm-4.0-dev:amd64 4.10.0-4build3 amd64 C++ wrappers for GTK4 (development files)
    ii libgtksourceview-5-0:amd64 5.12.0-1build1 amd64 shared libraries for the GTK 4 syntax highlighting widget
    ii libgtksourceview-5-common 5.12.0-1build1 all common files for the GTK 4 syntax highlighting widget
    ii libhandy-1-0:amd64 1.8.3-1build2 amd64 Library with GTK widgets for mobile phones
    ii libjavascriptcoregtk-4.1-0:amd64 2.48.5-0ubuntu0.24.04.1 amd64 JavaScript engine library from WebKitGTK
    ii libjavascriptcoregtk-6.0-1:amd64 2.48.5-0ubuntu0.24.04.1 amd64 JavaScript engine library from WebKitGTK
    ii libnma-gtk4-0:amd64 1.10.6-3build2 amd64 NetworkManager GUI GTK4 library
    ii libpanel-1-1:amd64 1.6.0-1build1 amd64 IDE paneling library for GTK
    ii libpanel-common 1.6.0-1build1 all IDE paneling library for GTK - common files
    ii libportal-gtk3-1:amd64 0.7.1-5build5 amd64 Flatpak portal library for GTK 3 GUIs
    ii libportal-gtk4-1:amd64 0.7.1-5build5 amd64 Flatpak portal library for GTK 4 GUIs
    ii libreoffice-gtk3 4:24.2.7-0ubuntu0.24.04.4 amd64 office productivity suite -- GTK+ 3 integration
    ii libtext-engine-0.1-0 0.1.1-4build2 amd64 Rich-text editing framework for GTK 4
    ii libvte-2.91-0:amd64 0.76.0-1ubuntu0.1 amd64 Terminal emulator widget for GTK+ 3.0 - runtime files
    ii libvte-2.91-common 0.76.0-1ubuntu0.1 amd64 Terminal emulator widget for GTK+ 3.0 - common files
    ii libvte-2.91-gtk4-0:amd64 0.76.0-1ubuntu0.1 amd64 Terminal emulator widget for GTK 4 - runtime files
    ii libwebkit2gtk-4.1-0:amd64 2.48.5-0ubuntu0.24.04.1 amd64 Web content engine library for GTK
    ii libwebkitgtk-6.0-4:amd64 2.48.5-0ubuntu0.24.04.1 amd64 Web content engine library for GTK
    ii libwmf-0.2-7-gtk:amd64 0.2.13-1.1build3 amd64 Windows metafile conversion GTK pixbuf plugin
    ii libwmf0.2-7-gtk:amd64 0.2.13-1.1build3 amd64 Windows metafile conversion GTK pixbuf plugin - transitional package
    ii libwxgtk3.2-1t64:amd64 3.2.4+dfsg-4build1 amd64 wxWidgets Cross-platform C++ GUI toolkit (GTK 3 runtime)
    ii python3-aptdaemon.gtk3widgets 1.1.1+bzr982-0ubuntu44 all Python 3 GTK+ 3 widgets to run an aptdaemon client
    ii qt5-gtk-platformtheme:amd64 5.15.13+dfsg-1ubuntu1 amd64 Qt 5 GTK+ 3 platform theme
    ii qt6-gtk-platformtheme:amd64 6.4.2+dfsg-21.1build5 amd64 Qt 6 GTK+ 3 platform theme
    ii remmina 1.4.35+dfsg-0ubuntu5.1 amd64 GTK+ Remote Desktop Client
    ii transmission-gtk 4.0.5-1build5 amd64 lightweight BitTorrent client (GTK+ interface)
    ii xdg-desktop-portal-gtk 1.15.1-1build2 amd64 GTK+/GNOME portal backend for xdg-desktop-portal
    ii yaru-theme-gtk 24.04.2-0ubuntu1 all Yaru GTK theme from the Ubuntu Community

    Continue reading...

Compartilhe esta Página