GTK Widget Reference

List of roughly every widget included in GTK


Containers control the behavior and layout of the widgets within them.

  • AspectFrame: Ensures that the widget retains the same aspect when resized
  • Box: Lays widgets in vertical or horizontal layouts
  • ButtonBox: Arranges buttons within the container, and themes may style buttons packed this way in a nicer way
  • Expander: Shows/hides a widget with a button that expands to reveal a hidden widget
  • FlowBox: Lays widgets horizontally, and dynamically shifts them to new rows as the parent container shrinks
  • Frame: Displays a frame around a widget
  • Grid: Lays widgets within a grid of rows and columns, with each widget occupying a X,Y position with a defined width and height
  • HeaderBar: Replaces the title bar, where widgets can be packed from the start, the center, or the end of the bar
  • Notebook: Identical to a stack, but has tabs for switching between widgets. Essentially a Stack + StackSwitcher with a set style
  • Paned: Containers two widgets side-by-side with a boundary between them that allows the user to resize between them
  • Revealer: Conceals and reveals a widget with an animation
  • ScrolledWindow: Makes the contained widget scrollable
  • Stack: Stores multiple widgets, but only one widget is shown at a time. May be combined with a StackSwitcher to have tabs
  • Toolbar: Bar at the top of the window for containing tool items


Containers with selectable widgets

  • ComboBox: Used in conjuction with a tree model to show a list of options to select from
  • ComboBoxText: Streamlined variant of a ComboBox to choose from a list of text options
  • IconView: Think of a file browser with mouse drag selections. Essentially a FlowBox-like container with a grid of icons with text
  • ListBox: Each widget is an interactive row in a list, which may be activated or clicked, and may support multiple selections
  • TreeView: Used to present tabular data, with each row being an object in the list, and each column a field of that object


Containers which display or receive text

  • Label: Displays text without any ability to copy or edit the text
  • Entry: Text box for a single line of text
  • TextView: Multi-line text box
  • SearchEntry: Entry designed for use for searches
  • SearchBar: Toolbar that reveals a search entry when the user starts typing


Widgets that can be clicked or activated by keyboard

  • AppChooserButton: Button that shows an app chooser dialog
  • Button: Interactive widget that may contain text, an image, or other widgets
  • CheckButton: Check mark with a label that can be toggled on/off
  • ColorButton: Displays a color and shows a color chooser dialog to select a different one
  • FileChooserButton: Shows a file chooser dialog to select file(s) or folder(s)
  • FontButton: Displays a font and shows a font chooser dialog ot select a different one
  • LinkButton: Hyperlink text button for linking to a URI
  • LockButton: Button with a lock icon for unlocking / locking privileged options
  • MenuButton: Button for showing a popover menu on click
  • RadioButton: When grouped with other radio buttons, only one button may be activate
  • ScaleButton: Button that pops up a scale
  • SpinButton: Number entry with buttons for incrementing and decrementing
  • StackSidebar: Vertical tabs for a stack
  • StackSwitcher: Horizontal tabs for a stack
  • Switch: Toggle button represented as an off/on switch
  • ToggleButton: Button that toggles between being pressed in and unpressed
  • VolumeButton: Button that pops up a volume scale


Widgets that display things

  • DrawingArea: Provides a canvas for drawing images onto
  • EventBox: Makes it possible for a widget to receive button / mouse events
  • GLArea: Context for rendering OpenGL onto
  • Image: Displays a picture
  • InfoBar: Hidden bar that is revealed when info or an error is to be shown
  • LevelBar: Shows a level of a scale
  • ProgressBar: Shows a progress bar
  • Separator: Shows a horizontal or vertical separator
  • ShortcutLabel: Keyboard shortcut label
  • Spinner: Shows a spinning animation
  • Statusbar: Displays information at the bottom of the window


Everything else

  • PlacesSidebar: Displays frequently visited places in the file system
  • Plug / Socket: Allows sharing widgets across windows

An exhaustive list of the gtk widgets can be found in the widget gallery, but the API version is GTK 4 and above, so crosscheck with the GTK3 docs to get the correct syntax for a widget