gtk3Iniziare con gtk3


Osservazioni

GTK + 3 noto anche come Gtk3 è un toolkit GUI multi-piattaforma, è scritto in C ma ha binding per molte lingue tra cui C ++, Python, Vala e Ruby. (Per l'elenco completo vedi il sito Web Gtk ).

Gtk + fa parte del Progetto GNU e rientra nelle licenze GNU LGPL, il che significa che può essere utilizzato da tutti gli sviluppatori, compresi quelli che sviluppano software proprietario, senza costi di licenza o royalties.

Crediti: liberamente basati su http://www.gtk.org/

Versioni

Versione Data di rilascio
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

fonti:

[C] "Hello World" in 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;
}
 

[C ++] "Hello World" in 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);
}
 

Installazione o configurazione

Pitone

finestre

Il modo più semplice per installare GTK3 per Python è usando PyGObject per Windows . Offre un programma di installazione che installa la maggior parte delle cose necessarie per sviluppare le appilcazioni GTK.

Il numero di opzioni offerte dal programma di installazione di PyGObject può essere scoraggiante, ma per la maggior parte dei progetti GTK l'unica opzione che devi selezionare è GTK+ 3.xx

C ++

Il binding C ++ per Gtk + è noto come gtkmm .

finestre

Su Microsoft Windows gtkmm può essere installato tramite l' ambiente MSYS2 . Una volta impostato l'ambiente MSYS2 installando il programma di installazione e aggiornando l'elenco dei pacchetti, installare gtkmm con

pacman -S mingw-w64-x86_64-gtkmm3 #64 bit
pacman -S mingw-w64-i686-gtkmm3   #32 bit
 

Installa pkg-config per ottenere facilmente compilatori e flag di linker e GNU autotools crea integrazione

pacman -S pkg-config
 

Ora l'applicazione gtkmm può essere compilata, collegata ed eseguita dall'interno dell'ambiente 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
 

Ma l'eseguibile non verrà eseguito all'esterno della shell MSYS2 a causa della mancanza di variabili di ambiente standard per la ricerca .dll. I seguenti file .dll devono essere copiati da <MSYS2 INSTALLATION DIRECTORY>\mingw64\lib\ (per l'installazione a 64 bit) nella directory dell'applicazione (dove si trova l' .exe ) manualmente. I numeri di versione possono variare in base all'installazione.

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
 

Dopo questo passaggio il programma dovrebbe essere eseguito. Ma non troverà i set di icone standard per Gtk +, ovvero il tema dell'icona di Adwaita , quindi le icone potrebbero non venire caricate. Le icone e alcuni altri file devono essere copiati nella directory dell'applicazione in modo che l'applicazione possa caricarli.

Da <MSYS2 INSTALL DIRECTORY>

mingw64
 |
 +-- lib
      |
      +-- gdk-pixbuf-2.0
share
 |
 +-- icons
       |
       +-- Adwaita
       |
       +-- hicolor (fallback icon theme for Gtk+)
 

Alla directory dell'applicazione, con la stessa struttura di directory.

kit di partenza

#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;
}
 

compilare:

c++ starterkit.c `pkg-config --libs --cflags gtk+-3.0` -o p
 

e

./p