Поиск…


замечания

GTK + 3, также известный как Gtk3, представляет собой многоплатформенный инструментарий GUI, он написан на C, но имеет привязки для множества языков, включая C ++, Python, Vala и Ruby. (Полный список см. На веб-сайте Gtk ).

Gtk + является частью проекта GNU и подпадает под лицензии GNU LGPL, что означает, что он может использоваться всеми разработчиками, включая тех, кто разрабатывает проприетарное программное обеспечение, без каких-либо лицензионных сборов или роялти.

Кредиты: свободно основаны на http://www.gtk.org/

Версии

Версия Дата выхода
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

Источники:

Установка или настройка

питон

Windows

Самый простой способ установить GTK3 для Python - это использование PyGObject для Windows . Он предлагает установщик, который устанавливает большинство вещей, необходимых для разработки приложений GTK.

Количество опций, предлагаемых установщиком PyGObject, может быть сложным, но для большинства проектов GTK единственным вариантом, который вы должны выбрать, является GTK+ 3.xx

C ++

Связывание C ++ для Gtk + известно как gtkmm .

Windows

В Microsoft Windows gtkmm можно установить через среду MSYS2 . Когда среда MSYS2 настроена установкой установщика и обновлением списка пакетов, установите gtkmm с помощью

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

Установите pkg-config для легкого получения флагов компилятора и компоновщика, а также интеграции с интеграцией GNU autotools

pacman -S pkg-config

Теперь приложение gtkmm можно скомпилировать, связать и запустить из среды 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

Но исполняемый файл не будет запускаться за пределами оболочки MSYS2 из-за отсутствия стандартных переменных окружения для поиска DLL. Следующие DLL-файлы необходимо скопировать из <MSYS2 INSTALLATION DIRECTORY>\mingw64\lib\ (для 64-разрядной установки) в каталог приложения (где находится .exe ) вручную. Номера версий могут меняться в соответствии с установкой.

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

После этого шага программа должна работать. Но он не найдет стандартные наборы значков для Gtk +, то есть тему значка Adwaita , поэтому значки могут не загружаться. Значки и несколько других файлов необходимо скопировать в каталог приложений, чтобы приложение могло их загрузить.

Из <MSYS2 INSTALL DIRECTORY>

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

В каталог приложений с той же структурой каталогов.

[C ++] "Hello World" в 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] «Привет мир» в 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;
}

стартовый комплект

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

компиляции:

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

а также

./p


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow