gtk3 Tutorial
Empezando con gtk3
Buscar..
Observaciones
GTK + 3, también conocido como Gtk3, es un conjunto de herramientas GUI multiplataforma, está escrito en C pero tiene enlaces para muchos lenguajes como C ++, Python, Vala y Ruby. (Para la lista completa vea el sitio web de Gtk ).
Gtk + es parte del Proyecto GNU y está bajo las licencias GNU LGPL, lo que significa que todos los desarrolladores pueden utilizarlo, incluidos aquellos que desarrollan software privativo, sin ningún tipo de derechos de licencia o derechos de autor.
Créditos: basado libremente en http://www.gtk.org/
Versiones
Versión | Fecha de lanzamiento |
---|---|
3.20 | 2016-03-01 |
3.18 | 2015-09-01 |
3.16 | 2015-03-01 |
3.14 | 2014-09-01 |
3.12 | 2014-03-01 |
3.10 | 2013-09-01 |
3.8 | 2013-03-01 |
3.6 | 2012-09-01 |
3.4 | 2012-04-01 |
3.2 | 2011-10-01 |
3.0 | 2010-02-01 |
Fuentes:
Instalación o configuración
Pitón
Windows
La forma más fácil de instalar GTK3 para Python es usar PyGObject para Windows . Ofrece un instalador que instala la mayoría de las cosas que necesita para desarrollar aplicaciones GTK.
La cantidad de opciones que ofrece el instalador de PyGObject puede ser desalentadora, pero para la mayoría de los proyectos GTK, la única opción que debe seleccionar es GTK+ 3.xx
C ++
La unión de C ++ para Gtk + se conoce como gtkmm .
Windows
En Microsoft Windows gtkmm puede instalarse a través del entorno MSYS2 . Una vez que se haya configurado el entorno MSYS2 instalando el instalador y actualizando la lista de paquetes, instale gtkmm con
pacman -S mingw-w64-x86_64-gtkmm3 #64 bit
pacman -S mingw-w64-i686-gtkmm3 #32 bit
Instale pkg-config para obtener fácilmente las compilaciones de compilador y vinculador y la integración de la compilación de autotools de GNU
pacman -S pkg-config
Ahora la aplicación gtkmm se puede compilar, vincular y ejecutar desde el entorno MSYS2.
# enable C++ 14 support if needed
# -mwindows flag is to suppress the background command-prompt window
# for GUI applications
g++ -mwindows -std=c++14 -o app.exe app.cpp `pkg-config --cflags --libs gtkmm-3.0`
./app.exe
Pero el ejecutable no se ejecutará fuera del shell MSYS2 debido a que faltan variables de entorno estándar para la búsqueda de .dll. Los siguientes .dll deben copiarse desde <MSYS2 INSTALLATION DIRECTORY>\mingw64\lib\
(para la instalación de 64 bits) en el directorio de la aplicación (donde se encuentra el .exe
) manualmente. Los números de versión pueden cambiar según la instalación.
libatk-1.0-0.dll
libatkmm-1.6-1.dll
libbz2-1.dll
libcairo-2.dll
libcairo-gobject-2.dll
libcairomm-1.0-1.dll
libepoxy-0.dll
libexpat-1.dll
libffi-6.dll
libfontconfig-1.dll
libfreetype-6.dll
libgcc_s_seh-1.dll
libgdk_pixbuf-2.0-0.dll
libgdk-3-0.dll
libgdkmm-3.0-1.dll
libgio-2.0-0.dll
libgiomm-2.4-1.dll
libglib-2.0-0.dll
libglibmm-2.4-1.dll
libgmodule-2.0-0.dll
libgobject-2.0-0.dll
libgtk-3-0.dll
libgtkmm-3.0-1.dll
libharfbuzz-0.dll
libiconv-2.dll
libintl-8.dll
libpango-1.0-0.dll
libpangocairo-1.0-0.dll
libpangoft2-1.0-0.dll
libpangomm-1.4-1.dll
libpangowin32-1.0-0.dll
libpixman-1-0.dll
libpng16-16.dll
libsigc-2.0-0.dll
libstdc++-6.dll
libwinpthread-1.dll
zlib1.dll
Después de este paso el programa debería ejecutarse. Pero no encontrará conjuntos de iconos estándar para Gtk +, es decir, el tema de iconos de Adwaita , por lo que es posible que los iconos no se carguen. Los iconos y algunos otros archivos deben copiarse en el directorio de la aplicación para que la aplicación pueda cargarlos.
Desde <MSYS2 INSTALL DIRECTORY>
mingw64
|
+-- lib
|
+-- gdk-pixbuf-2.0
share
|
+-- icons
|
+-- Adwaita
|
+-- hicolor (fallback icon theme for Gtk+)
A directorio de aplicaciones, con la misma estructura de directorios.
[C ++] "Hola mundo" en gtkmm
#include <gtkmm/application.h>
#include <gtkmm/applicationwindow.h>
#include <gtkmm/button.h>
// main window of the application
class HelloWorldWindow : public Gtk::ApplicationWindow {
// a simple push button
Gtk::Button btn;
public:
HelloWorldWindow()
: btn("Click me!") {// initialize button with a text label
// when user presses the button "clicked" signal is emitted
// connect an event handler for the signal with connect()
// which accepts lambda expression, among other things
btn.signal_clicked().connect(
[this]() {
btn.set_label("Hello World");
});
// add the push button to the window
add(btn);
// make the window visible
show_all();
}
};
int main(int argc, char *argv[]) {
// This creates an Gtk+ application with an unique application ID
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.HelloApp");
HelloWorldWindow hw;
// this starts the application with our window
// close the window to terminate the application
return app->run(hw);
}
[C] "Hola mundo" en Gtk +
#include <gtk/gtk.h>
// callback function which is called when button is clicked
static void on_button_clicked(GtkButton *btn, gpointer data) {
// change button label when it's clicked
gtk_button_set_label(btn, "Hello World");
}
// callback function which is called when application is first started
static void on_app_activate(GApplication *app, gpointer data) {
// create a new application window for the application
// GtkApplication is sub-class of GApplication
// downcast GApplication* to GtkApplication* with GTK_APPLICATION() macro
GtkWidget *window = gtk_application_window_new(GTK_APPLICATION(app));
// a simple push button
GtkWidget *btn = gtk_button_new_with_label("Click Me!");
// connect the event-handler for "clicked" signal of button
g_signal_connect(btn, "clicked", G_CALLBACK(on_button_clicked), NULL);
// add the button to the window
gtk_container_add(GTK_CONTAINER(window), btn);
// display the window
gtk_widget_show_all(GTK_WIDGET(window));
}
int main(int argc, char *argv[]) {
// create new GtkApplication with an unique application ID
GtkApplication *app = gtk_application_new(
"org.gtkmm.example.HelloApp",
G_APPLICATION_FLAGS_NONE
);
// connect the event-handler for "activate" signal of GApplication
// G_CALLBACK() macro is used to cast the callback function pointer
// to generic void pointer
g_signal_connect(app, "activate", G_CALLBACK(on_app_activate), NULL);
// start the application, terminate by closing the window
// GtkApplication* is upcast to GApplication* with G_APPLICATION() macro
int status = g_application_run(G_APPLICATION(app), argc, argv);
// deallocate the application object
g_object_unref(app);
return status;
}
kit de inicio
#include <gtk/gtk.h>
static void destroy(GtkWidget *widget, gpointer data)
{
gtk_main_quit();
}
int main(int argc, char *argv[])
{
gtk_init(&argc, &argv);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Window");
g_signal_connect(window, "destroy", G_CALLBACK(destroy), NULL);
GtkWidget *k;
k= gtk_fixed_new();
gtk_container_add(GTK_CONTAINER(window), k);
GtkWidget* la,*r;
la = gtk_button_new_with_label (",mkl");
gtk_fixed_put (GTK_FIXED (k), la,50,237);
gtk_widget_set_size_request(la, 98, 90);
// gtk_container_set_border_width(GTK_CONTAINER (la) , 5);
r = gtk_button_new_with_label (",kii");
gtk_fixed_put (GTK_FIXED (k), r,150,237);
gtk_widget_set_size_request(r, 98, 90);
gtk_widget_set_size_request(GTK_WIDGET(window),300,349);
gtk_widget_show_all(GTK_WIDGET(window));
gtk_main();
return 0;
}
compilar:
c++ starterkit.c `pkg-config --libs --cflags gtk+-3.0` -o p
y
./p