gtk3 튜토리얼
gtk3 시작하기
수색…
비고
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