Skip to main content
`Ctrl`+`K`

# GTK4 Basics

## Main loop and Signals

Like most GUI toolkits, GTK uses an event-driven programming model. When the user is doing nothing, GTK+ sits in the main loop and waits for input. If the user performs some action - say, a mouse click - then the main loop “wakes up” and delivers an event to GTK.

When widgets receive an event, they frequently emit one or more signals. Signals notify your program that “something interesting happened” by invoking functions you’ve connected to the signal. Such functions are commonly known as callbacks. When your callbacks are invoked, you would typically take some action - for example, when an Open button is clicked you might display a file chooser dialog. After a callback finishes, GTK will return to the main loop and await more user input.

`Gtk.Application` will run the main loop for you, so you don’t need to worry about it.

A `Gtk.Widget` it’s also a `GObject.Object`, so to know how to interact with these signals you must read the GObject Basics.

See also

Library initialization and main loop in GTK documentation.

## Properties

Read: GObject Basics: Properties.