수색…


비고

Gtk3으로 알려진 GTK + 3는 다중 플랫폼 GUI 툴킷으로 C로 작성되었지만 C ++, Python, Vala 및 Ruby를 비롯한 많은 언어에 대한 바인딩이 있습니다. 전체 목록은 Gtk 웹 사이트를 참조하십시오.

Gtk +는 GNU 프로젝트의 일부이며 GNU LGPL 라이센스에 속합니다. 라이센스 비용이나 사용료없이 독점 소프트웨어를 개발하는 개발자를 포함한 모든 개발자가 Gtk +를 사용할 수 있습니다.

크레딧 : 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

Python 용 GTK3를 설치하는 가장 쉬운 방법은 PyGObject for Windows를 사용하는 것 입니다. GTK 응용 프로그램을 개발하는 데 필요한 대부분의 것들을 설치하는 설치 프로그램을 제공합니다.

PyGObject 설치 프로그램이 제공하는 옵션의 수는 엄청나 다. 그러나 대부분의 GTK 프로젝트에서 선택할 수있는 유일한 옵션은 GTK+ 3.xx 입니다.

C ++

Gtk +에 대한 C ++ 바인딩은 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

그러나 .dll 조회에 대한 표준 환경 변수가 없기 때문에 실행 파일은 MSYS2 쉘 외부에서 실행되지 않습니다. 다음 .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 ++] gtkmm의 "Hello World"

#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 +에서의 "Hello World"

#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