Gerekli Paketleri Yükleyin
Python 3 ve GTK3 kullanarak bir uygulama oluşturmak için GObject kitaplıkları için Python bağlamaları yüklemeniz gerekir. Bu, neredeyse tüm büyük Linux dağıtımlarının depolarında bulunan PyGObject paketini kurarak yapılabilir. Bu bağımlılıkları Ubuntu'ya kurmak için aşağıdaki komutu kullanabilirsiniz:
$ sudo apt yükleme python3 python3-giPyGObject'i burada bulunan kaynak koddan da derleyebilirsiniz.
Hello World Uygulamasının Tam Kodu
Python 3 ve GTK3 ile yazılmış bir Hello World uygulamasının tam kod örneğini aşağıda bulabilirsiniz. Bu uygulama bir “Merhaba Dünya !!” tek tuşla masaüstüne bildirim.
gi'yi içe aktargi.require_version("Gtk", "3.0")
gi.require_version('Bildir', '0.7')
gi'den.depo içe aktarma Gtk
gi'den.depo içe aktarma Bildir
sınıf MyWindow(Gtk.Pencere):
tanım __init__(kendi):
Gtk.pencere.__init__(self, title="Merhaba Dünya")
gtk.pencere.set_default_size(self, 640, 480)
bildir.init("Basit GTK3 Uygulaması")
öz.kutu = Gtk.Kutu(boşluk=6)
öz.ekle(kendini.Kutu)
öz.düğme = Gtk.Düğme(etiket="Buraya Tıklayın")
öz.buton.set_halign(Gtk.hizala.MERKEZ)
öz.buton.set_valign(Gtk.hizala.MERKEZ)
öz.buton.connect("tıklandı", self.on_button_clicked)
öz.Kutu.pack_start(kendi kendine.düğmesi, Doğru, Doğru, 0)
def on_button_clicked(self, widget):
n = Bildir.Bildirim.new("Basit GTK3 Uygulaması", "Merhaba Dünya !!")
n.göstermek()
kazanmak = MyWindow()
kazanmak.connect("yok et", Gtk.main_quit)
kazanmak.Hepsini Göster ↓()
Gtk.ana()
Nihai sonucun ekran görüntüsü.
“Buraya Tıkla” butonuna tıklandığında gelen masaüstü bildirimi:
Adım Adım Açıklama
Kodun ilk birkaç satırındaki çeşitli “import” ifadeleri, uygulamanın çalışması için gerekli modülleri içe aktarır. Bu modüller, uygulamada kullanılabilecek çok sayıda sınıfı ve işlevi ortaya çıkarır. "Gi.require_version” ifadeleri, uyumluluk sorunlarını ve çökmeleri önlemek için kitaplığın yalnızca gerekli sürümünün içe aktarılmasını sağlar. Bu durumda “3.0”, uygulamada GTK2 veya GTK'nin herhangi bir sürümünün değil, GTK3 kitaplığının kullanıldığından emin olmak için kullanılır.
GTK sınıfına benzer şekilde, Notify sınıfı da gerekli sürümü belirtilerek içe aktarılır (0.7, bu makaleyi yazarken en son sürümdür). Bu sınıf uygulamada daha sonra kullanılacaktır.
gi'yi içe aktargi.require_version("Gtk", "3.0")
gi.require_version('Bildir', '0.7')
gi'den.depo içe aktarma Gtk
gi'den.depo içe aktarma Bildir
Sonraki ifade alt sınıfları “Gtk.Window” sınıfı, “MyWindow” sınıfı olarak. “Gtk.pencere.__init__” yöntemi, süper sınıfın yapıcısını başlatır (Gtk.Pencere) bir alt sınıfın (MyWindow) oluşturulduğu. Yapıcıda, uygulama başlığı da "başlık" argümanı kullanılarak "Merhaba Dünya" olarak ayarlanır. Uygulama penceresinin varsayılan geometrisi de "set_default_size" yönteminde genişlik ve yükseklik belirtilerek ayarlanır.
sınıf MyWindow(Gtk.Pencere):tanım __init__(kendi):
Gtk.pencere.__init__(self, title="Merhaba Dünya")
Gtk.pencere.set_default_size(self, 640, 480)
Daha sonra, bir uygulama başlığı sağlayarak “libnotify” kitaplığını başlatmak için Notify sınıfının “init” yöntemi kullanılır. Başlatma olmadan bildirimler gönderilmez ve Linux masaüstünde gösterilmez.
bildir.init("Basit GTK3 Uygulaması")"Kutu" ifadesi, ana uygulama penceresine boş bir düzen kapsayıcısı ekler. Bu kap, herhangi bir sayıda widget'ın yerleştirilebileceği boş bir tuval gibidir. "Aralık", "piksel" birimlerindeki widget'lar arasındaki boşluğu ifade eder.
öz.kutu = Gtk.Kutu(boşluk=6)öz.ekle(kendini.Kutu)
"Gtk" kullanılarak yeni bir "Buraya Tıklayın" düğme widget'ı oluşturulur.Düğme” yöntemi. Daha sonra “set_halign” ve “set_valign” yöntemleri kullanılarak ana kutu düzeninin yatay ve dikey merkezlerine hizalanır. Düğme "tıklandı" sinyaline bağlıdır, böylece düğmeye her basıldığında, "on_button_clicked" geri arama yöntemi çağrılabilir. Son olarak, buton widget'ı, "kutu" kullanılarak yatay eksen boyunca soldan kutu düzenine eklenir.pack_start” yöntemi. Bu yöntem dört argüman alır: eklenecek widget nesnesi, widget'ı genişletmek için boole, widget'ı doldurmak için boole ve eklenen ve diğer bitişik widget'lar arasında doldurma.
öz.düğme = Gtk.Düğme(etiket="Buraya Tıklayın")öz.buton.set_halign(Gtk.hizala.MERKEZ)
öz.buton.set_valign(Gtk.hizala.MERKEZ)
öz.buton.connect("tıklandı", self.on_button_clicked)
öz.Kutu.pack_start(kendi kendine.düğmesi, Doğru, Doğru, 0)
“Buraya Tıklayın” düğmesine her basıldığında “on_button_click” yöntemi çağrılır. Bildirim başlığını ve içeriğini argüman olarak alan “yeni” yöntemi kullanılarak yeni bir bildirim oluşturulur. Bu bildirim daha sonra "göster" yöntemi kullanılarak masaüstünde gösterilir. Düğmeye her basıldığında bildirimin yeniden oluşturulmasını önlemek için "yeni" ifadesini ana kurucuda da taşıyabilirsiniz.
def on_button_clicked(self, widget):n = Bildir.Bildirim.new("Basit GTK3 Uygulaması", "Merhaba Dünya !!")
n.göstermek()
Sonraki birkaç ifade, yeni bir uygulama penceresi oluşturmak, yönetmek ve göstermekle ilgilidir. Yeni bir “MyWindow” sınıfı örneği oluşturulur ve bir kullanıcı “x” düğmesine tıklayarak uygulamadan çıkmak istediğinde uygulamanın düzgün bir şekilde kapatılmasını sağlamak için “destroy” sinyaline bağlanır. "show_all" yöntemi, uygulama penceresini Linux masaüstünüzde görüntüler. Son olarak, olayları ve sinyalleri ele almaktan sorumlu ana uygulama döngüsü çalıştırılır.
Sonuç
GTK3 ve Qt, Linux'ta yerel olarak çalışan uygulamalar oluşturmak için kullanılan en popüler GUI çerçevelerinden bazılarıdır. Bu çerçevelerin her ikisi de ana mantığı C++ ve Python dillerinde yazmanıza izin verir. Bir sonraki Linux uygulama projeniz için bu araç takımlarından herhangi birini seçerek yanlış gidemezsiniz.