Szukaj…


Uwagi

GTK + 3 znany również jako Gtk3 to wieloplatformowy zestaw GUI, napisany jest w C, ale ma powiązania z wieloma językami, w tym C ++, Python, Vala i Ruby. (Pełna lista znajduje się na stronie Gtk ).

Gtk + jest częścią Projektu GNU i podlega licencjom GNU LGPL, co oznacza, że mogą go używać wszyscy programiści, w tym twórcy oprogramowania własnościowego, bez żadnych opłat licencyjnych ani opłat licencyjnych.

Kredyty: luźno oparte na http://www.gtk.org/

Wersje

Wersja Data wydania
3,20 01.03.2016
3.18 01.09.2015
3.16 01.03.2015
3.14 01.09.2014
3.12 01.03.2014
3.10 01.09.2013
3.8 01.03.2013
3.6 01.09.2012
3.4 01.04.2012
3.2 01.10.2011
3.0 01.02.2010

Źródła:

Instalacja lub konfiguracja

Pyton

Windows

Najłatwiejszym sposobem zainstalowania GTK3 dla Pythona jest użycie PyGObject dla Windows . Oferuje instalator, który instaluje większość rzeczy potrzebnych do opracowania aplikacji GTK.

Liczba opcji, które oferuje instalator PyGObject, może być zniechęcająca, ale dla większości projektów GTK jedyną opcją, którą musisz wybrać, jest GTK+ 3.xx

C ++

Wiązanie C ++ dla Gtk + jest znane jako gtkmm .

Windows

W systemie Microsoft Windows gtkmm można zainstalować za pomocą środowiska MSYS2 . Po skonfigurowaniu środowiska MSYS2 przez zainstalowanie instalatora i zaktualizowanie listy pakietów, zainstaluj gtkmm za pomocą

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

Zainstaluj pkg-config, aby łatwo uzyskać flagi kompilatora i konsolidatora oraz integrację kompilacji autotoolów GNU

pacman -S pkg-config

Teraz aplikacja gtkmm może być kompilowana, łączona i uruchamiana ze środowiska 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

Ale plik wykonywalny nie będzie działał poza powłoką MSYS2 z powodu braku standardowych zmiennych środowiskowych dla wyszukiwania .dll. Następujące pliki DLL należy skopiować <MSYS2 INSTALLATION DIRECTORY>\mingw64\lib\ z <MSYS2 INSTALLATION DIRECTORY>\mingw64\lib\ (dla instalacji 64-bitowej) do katalogu aplikacji (gdzie znajduje się <MSYS2 INSTALLATION DIRECTORY>\mingw64\lib\ .exe ) Numery wersji mogą ulec zmianie w zależności od instalacji.

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

Po tym kroku program powinien zostać uruchomiony. Ale nie znajdzie standardowych zestawów ikon dla Gtk +, tj. Motywu ikony Adwaita , więc ikony mogą się nie ładować. Ikony i kilka innych plików należy skopiować do katalogu aplikacji, aby aplikacja mogła je załadować.

Z <MSYS2 INSTALL DIRECTORY>

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

Do katalogu aplikacji o tej samej strukturze katalogów.

[C ++] „Hello World” w 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] „Hello World” w 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;
}

zestaw startowy

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

skompilować:

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

i

./p


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow