DEV Community

Ali Orhun Akkirman for Açıklab

Posted on

GO ile GTK uygulaması geliştirme - 1

GO dili ile GTK3 kütüphanesi kullanarak geliştirme yapabilirsiniz.

GOlang uygulamasının kurulumu

Debian tabanlı sistemlerde golang dilini kurabilmek için golang paketini yüklemeniz gerekmektedir. Bu paket kendisi diğer bağımlılıklarını yüklemektedir:

sudo apt install golang
Enter fullscreen mode Exit fullscreen mode

GTK geliştirmek için gerekli paketlerin kurulumu

GOlang paketini yükledikten sonra GTK arayüzü geliştirmek için ise aşağıdaki 3 paketi ve gerekli bağımlılıkları yüklemeniz gerekmektedir:

sudo apt install libgtk-3-dev libcairo2-dev libglib2.0-dev
Enter fullscreen mode Exit fullscreen mode

Güncel GOTK3 kütüphanesini kullanmak

Gerekli paketler kurulduktan sonra komut satırından aşağıdaki komut ile GTK3'ün GO dili bağlayıcısını indirmeniz gerekmektedir:

go get github.com/gotk3/gotk3/gtk
Enter fullscreen mode Exit fullscreen mode

Ve tabi bu adımdan sonra sisteminiz artık GTK ile uygulama geliştirmek için hazır.

Örnek GTK uygulaması inşa etmek

Bu işlem için GOTK3 kütüphanesindeki ilk örneği yapabiliriz. Yorum satırlarını da bilerek kaldırmadım detaylı inceleyebilirsiniz. Bu örnek ve daha fazla örneği ise bu adreste bulabilirsiniz. Aşağıdaki içeriği örneğin ilkornek.go adıyla kaydedebilirsiniz.

package main

import (
    "github.com/gotk3/gotk3/gtk"
    "log"
)

func main() {
    // Initialize GTK without parsing any command line arguments.
    gtk.Init(nil)

    // Create a new toplevel window, set its title, and connect it to the
    // "destroy" signal to exit the GTK main loop when it is destroyed.
    win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
    if err != nil {
        log.Fatal("Unable to create window:", err)
    }
    win.SetTitle("İlk Örnek Başlık")
    win.Connect("destroy", func() {
        gtk.MainQuit()
    })

    // Create a new label widget to show in the window.
    l, err := gtk.LabelNew("Merhaba gotk3 Dünyası!")
    if err != nil {
        log.Fatal("Unable to create label:", err)
    }

    // Add the label to the window.
    win.Add(l)

    // Set the default window size.
    win.SetDefaultSize(800, 600)

    // Recursively show all widgets contained in this window.
    win.ShowAll()

    // Begin executing the GTK main loop.  This blocks until
    // gtk.MainQuit() is run.
    gtk.Main()
}
Enter fullscreen mode Exit fullscreen mode

Dosyayı kaydettiğiniz yerde aşağıdaki komutu kullanarak inşa edebilirsiniz. Bu komut çıktısında ilkornek adında bir çalıştırılabilir ikili dosya oluşturulmaktadır:

go build ilkornek.go
Enter fullscreen mode Exit fullscreen mode

Uygulamayı çalıştırmak

Oluşturulan ikili dosyayı aşağıdaki gibi çalıştırarak "Merhaba gotk3 Dünyası!" yazısını görebilirsiniz:

./ilkornek
Enter fullscreen mode Exit fullscreen mode

Alt Text

Nihil novi sub sole

Oldest comments (3)

Collapse
 
itachiuchiha profile image
Itachi Uchiha

Su buton ekleyince butun frame’e yayilmasi ya da herhangi bir elementin frame’e yayilmasi kotu bir sey.

C#’in Windows Form’u gibi drap drop double click ve kodu yaz calistir seklinde bir sey asla gelmeyecek sanirim.

Collapse
 
aliorhun profile image
Ali Orhun Akkirman • Edited

"Grid" yapısını doğru ayarladıktan sonra düzeliyor aslında GTK3'te. Tabi bu örnekte grid yapısı hiç kullanılmadı :)

Python belgelerinden bağlantı vereceğim ama:
python-gtk-3-tutorial.readthedocs....

Aslında glade ile arayüzü oluşturup sonra bağlayabiliyorsun da :) Tabi bence kısıtlıyor insanı.

Collapse
 
itachiuchiha profile image
Itachi Uchiha

Evet bunu kullaniyorum ama otomatik olarak belirtilmedikce componentler ust componenti kaplamamali. Belirtilen boyut kadar containera gizlenmeli bence.

Her component ayni zamanda container olmali yani.