Ali Orhun Akkirman
Posted on May 26, 2020
Bir önceki bölümde basit bir GSettings şeması oluşturmuştuk. Şimdi bu şema kullanarak belirli bir değeri disk üzerinde tutmayı göreceğiz.
Python ile GTK3 uygulaması geliştirme
Öncelikle Python ile GTK programlamak için PyGTK kütüphanesi kullanılmamakta. Daha doğrusu GTK2 ile birlikte geliştirilen bu kütüphane yerini güncel olarak geliştirilen PyGOBject kütüphanesine bıraktı. Windows üzerinde de GTK3 ile uygulama geliştirilebilmekte fakat biz yine Debian tabanlı sistemlerde örneklerimize devam edeceğiz.
Basitçe kurulum için aşağıdaki paketleri yüklemeniz yeterli:
sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0
Bu adım yerine Pip paket yönetim sistemi ile kurmak isterseniz ise biraz daha geliştirici bağımlıklıklarına ihtiyaç duyuyorsunuz. Fakat şuan basit bir yazı olmasını istediğim için bu bilgiyi burada paylaşmıyorum fakat isteyen bu bağlantıdan erişebilir. Zor değil fakat bazı gereksiz paketlerin yüklenmesi gerektirdiği için o paketlerin zorunlu olmadığını belirtmek istedim. Fakat PyGObject'in güncel sürümünü kullanmak istiyorsanız paket yönetim sistemini kullanmanız gerekebilir. Fakat bu durumda ürününüzü yaygınlaştırırken yeni özelliklerin Debian tabanlı işletim sistemi paket yönetim sisteminde olması ilgili işletim sisteminin kararlılığı için daha uygun olacaktır.
Örnek Python Uygulaması
Örnek Python uygulamamızda ana bileşen olarak boş bir pencere bulunmakta. Bu pencerenin başlığı, kenarlık değeri ve kontol butonu bulunmaktadır. Bu kontrol butonu ise bizim için ayar yapmamızı sağlayan buton olarak düşünebiliriz. Bu botunun içinde bir yazı ve radiobuton olduğunu görebilmekteyiz. Bu butonu kontrol eden 2 adet fonksiyonumuz bulunmakta ki bunlardan birisi mevcut seçili durumu değiştiren diğeri de kontrol eden olarak düşünebiliriz.
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gio, Gtk
class App(object):
BASE_KEY = "apps.gsettings-ornekuygulama"
def __init__(self):
# GSettings anahtarı ve değişimi
settings = Gio.Settings.new(self.BASE_KEY)
check_button = Gtk.CheckButton("Mantıksal bir özellik")
check_button.set_active(settings.get_boolean("ornekozellik"))
settings.connect("changed::ornekozellik", self.on_degisim_ornekozellik, check_button)
check_button.connect('toggled', self.on_kontrol_ornekozellik, settings)
# ana pencere bileşeni
window = Gtk.Window(type=Gtk.WindowType.TOPLEVEL)
window.set_title('Örnek GSettings denemesi')
window.set_border_width(64)
window.connect_after('destroy', self.on_cikis_pencere)
window.add(check_button)
window.show_all()
Gtk.main()
def on_degisim_ornekozellik(self, settings, key, check_button):
check_button.set_active(settings.get_boolean("ornekozellik"))
def on_kontrol_ornekozellik(self, button, settings):
settings.set_boolean("ornekozellik", button.get_active())
def on_cikis_pencere(self, widget, data=None):
Gtk.main_quit()
if __name__ == "__main__":
app = App()
Yukarıdaki ilgili kod parçacığını bir dosyada herhangi bir yerde kaydedip aşağıdaki gibi çağırdığınızda aşağıdaki görsel gibi bir pencere açılacaktır. Ve butonu açıp kapattığınızda gerçekten de ayarın true ve false olduğunu dconf-editor ile de kontrol edebilirsiniz. Kaydettiğiniz dosya deneme01.py ise aşağıdaki gibi çağırabilirsiniz.
python3 deneme01.py
Memento audere semper
Posted on May 26, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.