Description
The GtkButton widget is generally used to trigger a callback function that is
called when the button is pressed. The various signals and how to use them
are outlined below.
The GtkButton widget can hold any valid child widget. That is, it can hold
almost any other standard GtkWidget. The most commonly used child is the
GtkLabel.
CSS nodes
GtkButton has a single CSS node with name button. The node will get the
style classes .image-button or .text-button, if the content is just an
image or label, respectively. It may also receive the .flat style class.
Other style classes that are commonly used with GtkButton include
.suggested-action and .destructive-action. In special cases, buttons
can be made round by adding the .circular style class.
Button-like widgets like GtkToggleButton, GtkMenuButton, GtkVolumeButton,
GtkLockButton, GtkColorButton, GtkFontButton or GtkFileChooserButton use
style classes such as .toggle, .popup, .scale, .lock, .color, .font, .file
to differentiate themselves from a plain GtkButton.
Functions
gtk_button_new_with_label ()
GtkWidget *
gtk_button_new_with_label (const gchar *label);
Creates a GtkButton widget with a GtkLabel child containing the given
text.
gtk_button_new_with_mnemonic ()
GtkWidget *
gtk_button_new_with_mnemonic (const gchar *label);
Creates a new GtkButton containing a label.
If characters in label
are preceded by an underscore, they are underlined.
If you need a literal underscore character in a label, use “__” (two
underscores). The first underlined character represents a keyboard
accelerator called a mnemonic.
Pressing Alt and that key activates the button.
gtk_button_new_from_icon_name ()
GtkWidget *
gtk_button_new_from_icon_name (const gchar *icon_name,
GtkIconSize size);
Creates a new button containing an icon from the current icon theme.
If the icon name isn’t known, a “broken image” icon will be
displayed instead. If the current icon theme is changed, the icon
will be updated appropriately.
This function is a convenience wrapper around gtk_button_new() and
gtk_button_set_image().
Returns
a new GtkButton displaying the themed icon
Since: 3.10
gtk_button_pressed ()
void
gtk_button_pressed (GtkButton *button);
gtk_button_pressed has been deprecated since version 2.20 and should not be used in newly-written code.
Use the “button-press-event” signal.
Emits a “pressed” signal to the given GtkButton.
gtk_button_released ()
void
gtk_button_released (GtkButton *button);
gtk_button_released has been deprecated since version 2.20 and should not be used in newly-written code.
Use the “button-release-event” signal.
Emits a “released” signal to the given GtkButton.
gtk_button_enter ()
void
gtk_button_enter (GtkButton *button);
gtk_button_enter has been deprecated since version 2.20 and should not be used in newly-written code.
Use the “enter-notify-event” signal.
Emits a “enter” signal to the given GtkButton.
gtk_button_leave ()
void
gtk_button_leave (GtkButton *button);
gtk_button_leave has been deprecated since version 2.20 and should not be used in newly-written code.
Use the “leave-notify-event” signal.
Emits a “leave” signal to the given GtkButton.
gtk_button_get_label ()
const gchar *
gtk_button_get_label (GtkButton *button);
Fetches the text from the label of the button, as set by
gtk_button_set_label(). If the label text has not
been set the return value will be NULL. This will be the
case if you create an empty button with gtk_button_new() to
use as a container.
Returns
The text of the label widget. This string is owned
by the widget and must not be modified or freed.
gtk_button_set_label ()
void
gtk_button_set_label (GtkButton *button,
const gchar *label);
Sets the text of the label of the button to str
. This text is
also used to select the stock item if gtk_button_set_use_stock()
is used.
This will also clear any previously set labels.
gtk_button_get_use_stock ()
gboolean
gtk_button_get_use_stock (GtkButton *button);
gtk_button_get_use_stock has been deprecated since version 3.10 and should not be used in newly-written code.
Returns whether the button label is a stock item.
Returns
TRUE if the button label is used to
select a stock item instead of being
used directly as the label text.
gtk_button_set_use_stock ()
void
gtk_button_set_use_stock (GtkButton *button,
gboolean use_stock);
gtk_button_set_use_stock has been deprecated since version 3.10 and should not be used in newly-written code.
If TRUE, the label set on the button is used as a
stock id to select the stock item for the button.
gtk_button_get_use_underline ()
gboolean
gtk_button_get_use_underline (GtkButton *button);
Returns whether an embedded underline in the button label indicates a
mnemonic. See gtk_button_set_use_underline().
Returns
TRUE if an embedded underline in the button label
indicates the mnemonic accelerator keys.
gtk_button_set_use_underline ()
void
gtk_button_set_use_underline (GtkButton *button,
gboolean use_underline);
If true, an underline in the text of the button label indicates
the next character should be used for the mnemonic accelerator key.
gtk_button_set_focus_on_click ()
void
gtk_button_set_focus_on_click (GtkButton *button,
gboolean focus_on_click);
gtk_button_set_focus_on_click has been deprecated since version 3.20 and should not be used in newly-written code.
Use gtk_widget_set_focus_on_click() instead
Sets whether the button will grab focus when it is clicked with the mouse.
Making mouse clicks not grab focus is useful in places like toolbars where
you don’t want the keyboard focus removed from the main area of the
application.
Since: 2.4
gtk_button_get_focus_on_click ()
gboolean
gtk_button_get_focus_on_click (GtkButton *button);
gtk_button_get_focus_on_click has been deprecated since version 3.20 and should not be used in newly-written code.
Use gtk_widget_get_focus_on_click() instead
Returns whether the button grabs focus when it is clicked with the mouse.
See gtk_button_set_focus_on_click().
Returns
TRUE if the button grabs focus when it is clicked with
the mouse.
Since: 2.4
gtk_button_set_alignment ()
void
gtk_button_set_alignment (GtkButton *button,
gfloat xalign,
gfloat yalign);
gtk_button_set_alignment has been deprecated since version 3.14 and should not be used in newly-written code.
Access the child widget directly if you need to control
its alignment.
Sets the alignment of the child. This property has no effect unless
the child is a GtkMisc or a GtkAlignment.
Since: 2.4
gtk_button_get_alignment ()
void
gtk_button_get_alignment (GtkButton *button,
gfloat *xalign,
gfloat *yalign);
gtk_button_get_alignment has been deprecated since version 3.14 and should not be used in newly-written code.
Access the child widget directly if you need to control
its alignment.
Gets the alignment of the child in the button.
Since: 2.4
gtk_button_set_image_position ()
void
gtk_button_set_image_position (GtkButton *button,
GtkPositionType position);
Sets the position of the image relative to the text
inside the button.
Since: 2.10
gtk_button_get_image_position ()
GtkPositionType
gtk_button_get_image_position (GtkButton *button);
Gets the position of the image relative to the text
inside the button.
Since: 2.10
gtk_button_set_always_show_image ()
void
gtk_button_set_always_show_image (GtkButton *button,
gboolean always_show);
If TRUE, the button will ignore the “gtk-button-images”
setting and always show the image, if available.
Use this property if the button would be useless or hard to use
without the image.
Since: 3.6
gtk_button_get_always_show_image ()
gboolean
gtk_button_get_always_show_image (GtkButton *button);
Returns whether the button will ignore the “gtk-button-images”
setting and always show the image, if available.
Returns
TRUE if the button will always show the image
Since: 3.6
gtk_button_get_event_window ()
GdkWindow *
gtk_button_get_event_window (GtkButton *button);
Returns the button’s event window if it is realized, NULL otherwise.
This function should be rarely needed.
Returns
button
’s event window.
[transfer none]
Since: 2.22
Property Details
The “always-show-image” property
“always-show-image” gboolean
If TRUE, the button will ignore the “gtk-button-images”
setting and always show the image, if available.
Use this property if the button would be useless or hard to use
without the image.
Owner: GtkButton
Flags: Read / Write / Construct
Default value: FALSE
Since: 3.6
The “image” property
“image” GtkWidget *
The child widget to appear next to the button text.
Owner: GtkButton
Flags: Read / Write
Since: 2.6
The “image-position” property
“image-position” GtkPositionType
The position of the image relative to the text inside the button.
Owner: GtkButton
Flags: Read / Write
Default value: GTK_POS_LEFT
Since: 2.10
The “label” property
“label” gchar *
Text of the label widget inside the button, if the button contains a label widget.
Owner: GtkButton
Flags: Read / Write / Construct
Default value: NULL
The “relief” property
“relief” GtkReliefStyle
The border relief style.
Owner: GtkButton
Flags: Read / Write
Default value: GTK_RELIEF_NORMAL
The “use-stock” property
“use-stock” gboolean
If set, the label is used to pick a stock item instead of being displayed.
GtkButton:use-stock has been deprecated since version 3.10 and should not be used in newly-written code.
Owner: GtkButton
Flags: Read / Write / Construct
Default value: FALSE
The “use-underline” property
“use-underline” gboolean
If set, an underline in the text indicates the next character should be used for the mnemonic accelerator key.
Owner: GtkButton
Flags: Read / Write / Construct
Default value: FALSE
The “xalign” property
“xalign” gfloat
If the child of the button is a GtkMisc or GtkAlignment, this property
can be used to control its horizontal alignment. 0.0 is left aligned,
1.0 is right aligned.
GtkButton:xalign has been deprecated since version 3.14 and should not be used in newly-written code.
Access the child widget directly if you need to control
its alignment.
Owner: GtkButton
Flags: Read / Write
Allowed values: [0,1]
Default value: 0.5
Since: 2.4
The “yalign” property
“yalign” gfloat
If the child of the button is a GtkMisc or GtkAlignment, this property
can be used to control its vertical alignment. 0.0 is top aligned,
1.0 is bottom aligned.
GtkButton:yalign has been deprecated since version 3.14 and should not be used in newly-written code.
Access the child widget directly if you need to control
its alignment.
Owner: GtkButton
Flags: Read / Write
Allowed values: [0,1]
Default value: 0.5
Since: 2.4
Style Property Details
The “child-displacement-x” style property
“child-displacement-x” gint
How far in the x direction to move the child when the button is depressed.
GtkButton:child-displacement-x has been deprecated since version 3.20 and should not be used in newly-written code.
Use CSS margins and padding instead;
the value of this style property is ignored.
Owner: GtkButton
Flags: Read
Default value: 0
The “child-displacement-y” style property
“child-displacement-y” gint
How far in the y direction to move the child when the button is depressed.
GtkButton:child-displacement-y has been deprecated since version 3.20 and should not be used in newly-written code.
Use CSS margins and padding instead;
the value of this style property is ignored.
Owner: GtkButton
Flags: Read
Default value: 0
The “default-border” style property
“default-border” GtkBorder *
The "default-border" style property defines the extra space to add
around a button that can become the default widget of its window.
For more information about default widgets, see gtk_widget_grab_default().
GtkButton:default-border has been deprecated since version 3.14 and should not be used in newly-written code.
Use CSS margins and padding instead;
the value of this style property is ignored.
Owner: GtkButton
Flags: Read
The “default-outside-border” style property
“default-outside-border” GtkBorder *
The "default-outside-border" style property defines the extra outside
space to add around a button that can become the default widget of its
window. Extra outside space is always drawn outside the button border.
For more information about default widgets, see gtk_widget_grab_default().
GtkButton:default-outside-border has been deprecated since version 3.14 and should not be used in newly-written code.
Use CSS margins and padding instead;
the value of this style property is ignored.
Owner: GtkButton
Flags: Read
The “displace-focus” style property
“displace-focus” gboolean
Whether the child_displacement_x/child_displacement_y properties
should also affect the focus rectangle.
GtkButton:displace-focus has been deprecated since version 3.20 and should not be used in newly-written code.
Use CSS margins and padding instead;
the value of this style property is ignored.
Owner: GtkButton
Flags: Read
Default value: FALSE
Since: 2.6
The “image-spacing” style property
“image-spacing” gint
Spacing in pixels between the image and label.
Owner: GtkButton
Flags: Read
Allowed values: >= 0
Default value: 2
The “inner-border” style property
“inner-border” GtkBorder *
Sets the border between the button edges and child.
GtkButton:inner-border has been deprecated since version 3.4 and should not be used in newly-written code.
Use the standard border and padding CSS properties;
the value of this style property is ignored.
Owner: GtkButton
Flags: Read
Since: 2.10
Signal Details
The “activate” signal
void
user_function (GtkButton *widget,
gpointer user_data)
The ::activate signal on GtkButton is an action signal and
emitting it causes the button to animate press then release.
Applications should never connect to this signal, but use the
“clicked” signal.
Flags: Action
The “clicked” signal
void
user_function (GtkButton *button,
gpointer user_data)
Emitted when the button has been activated (pressed and released).
Flags: Action
The “enter” signal
void
user_function (GtkButton *button,
gpointer user_data)
Emitted when the pointer enters the button.
GtkButton::enter has been deprecated since version 2.8 and should not be used in newly-written code.
Use the “enter-notify-event” signal.
Flags: Run First
The “leave” signal
void
user_function (GtkButton *button,
gpointer user_data)
Emitted when the pointer leaves the button.
GtkButton::leave has been deprecated since version 2.8 and should not be used in newly-written code.
Use the “leave-notify-event” signal.
Flags: Run First
The “pressed” signal
void
user_function (GtkButton *button,
gpointer user_data)
Emitted when the button is pressed.
GtkButton::pressed has been deprecated since version 2.8 and should not be used in newly-written code.
Use the “button-press-event” signal.
Flags: Run First
The “released” signal
void
user_function (GtkButton *button,
gpointer user_data)
Emitted when the button is released.
GtkButton::released has been deprecated since version 2.8 and should not be used in newly-written code.
Use the “button-release-event” signal.
Flags: Run First