piton

Python ve GTK3'te Basit Bir Uygulama Nasıl Oluşturulur

Python ve GTK3'te Basit Bir Uygulama Nasıl Oluşturulur
Bu makale, Python 3 programlama dilini ve GTK3 GUI çerçevesini kullanarak Linux'ta grafiksel bir "Merhaba Dünya" uygulamasının nasıl oluşturulacağını açıklayacaktır. Eğitimdeki tüm kod örnekleri Python 3 ile test edilmiştir.8.6 ve GTK 3.24.Ubuntu 20'de 23.10.

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-gi

PyGObject'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 aktar
gi.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 aktar
gi.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.

Best Linux Distros for Gaming in 2021
The Linux operating system has come a long way from its original, simple, server-based look. This OS has immensely improved in recent years and has no...
Linux'ta oyun oturumunuzu nasıl yakalar ve yayınlarsınız?
Geçmişte oyun oynamak sadece bir hobi olarak görülüyordu, ancak zamanla oyun endüstrisi teknoloji ve oyuncu sayısı açısından büyük bir büyüme gördü. Ç...
El Takibiyle Oynanabilecek En İyi Oyunlar
Oculus Quest kısa süre önce, kontrolörler olmadan elle takip etme harika fikrini tanıttı. Resmi olarak veya SideQuest aracılığıyla destek sağlayan sür...