4
Nis

Pencere Boyutunu Ayarlamak

PyGTK ile oluşturduğumuz pencerelerin boyutunu belirlemek için resize() adlı metodu kullanıyoruz. Hemen basit bir örnek yapalım.

import pygtk
pygtk.require20()
import gtk

class Program(object):
def __init__(self):
self.pencere = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.pencere.set_title("Merhaba Dunya")
self.pencere.connect("delete_event", gtk.main_quit)
self.pencere.resize(300,300)
self.pencere.set_position(gtk.WIN_POS_CENTER)
self.pencere.show()

def main(self):
gtk.main()

uyg = Program()
uyg.main()

Pencere Konumunu Ayarlamak
PyGTK’da yazdığımız programları çalıştırdığımızda programların sol üst köşede başladığı dikkatinizi çekmiştir. Eğer istersek programların başlayacağı konumu belirleyebiliyoruz. GTK’da bu işlem için set_position() adlı bir metodumuz var. set_position metodu 5 farklı değer alır.

 

gtk.WIN_POS_NONE:
Pencere konumu üzerinde herhangi bir değişiklik yapılmayacağını belirtir.
gtk.WIN_POS_CENTER:
Pencereyi ekranın ortasına yerleştirir.
gtk.WIN_POS_MOUSE:
Pencere, farenin o anda bulunduğu konumda açılır.
gtk.WIN_POS_CENTER_ALWAYS:
Pencerenin boyutu değişse de, pencereyi hep ekranın ortasında tutar.
gtk.WIN_POS_CENTER_ON_PARENT:
Eğer ikinci bir pencere varsa bu pencerenin ana pencereyi ortalamasını sağlar.[1]

Basit bir örnek üzerinde kullanımını görelim.

import pygtk
pygtk.require20()
import gtk

class Program(object):
def __init__(self):
self.pencere = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.pencere.set_title("Merhaba Dunya")
self.pencere.connect("delete_event", gtk.main_quit)
self.pencere.resize(300,300)
self.pencere.set_position(gtk.WIN_POS_CENTER)
self.pencere.show()

def main(self):
gtk.main()

uyg = Program()
uyg.main()

Pencerelere Simge Eklemek

PyGTK’da yazdığınız programları çalıştırdığınızda görev çubuğunda belirgin bir simgenin olmadığı canınızı sıkıyorsa o pencereye bir simge eklemenin vakti geldi demektir. GTK’da bu işlem için set_icon_from_file() metodunu kullanıyoruz.

import pygtk
pygtk.require20()
import gtk

class Program(object):
def __init__(self):
self.pencere = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.pencere.connect("delete_event", gtk.main_quit)
self.pencere.set_title("Merhaba Dunya")
self.pencere.set_icon_from_file("simge.png")
self.pencere.resize(300,300)
self.pencere.set_position(gtk.WIN_POS_CENTER)
self.pencere.show()

def main(self):
gtk.main()

uyg = Program()
uyg.main()

Bu şekilde programınıza simge ekleyebilirsiniz dikkat etmeniz gereken nokta ise simge.png’nin program ile aynı dizinde olması gerektiğidir.

 

Şeffaf Pencereler Oluşturmak

Oluşturduğumuz pencerelerinin şeffaf olmasını istiyorsak set_opacity() adlı metotdan yardım alacağız.

import pygtk
pygtk.require20()
import gtk

class Program(object):
    def __init__(self):
        self.pencere = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.pencere.set_position(gtk.WIN_POS_CENTER)
        self.pencere.resize(300,300)
        self.pencere.connect("delete_event", gtk.main_quit)
        self.pencere.set_icon_from_file("simge.png")
        self.pencere.set_title("Merhaba Dunya")
        self.pencere.set_opacity(0.7)
        self.pencere.show()

    def main(self):
        gtk.main()

uyg = Program()
uyg.main()

0.7 değeri penceremizin şeffaflığını belirliyor 0′a yaklaştıkça şeffaflık artacak, 1′e yaklaştıkça azalacaktır.

 

Boyutlandırılamayan Pencereler Oluşturmak

Bazen yaptığınız programların boyutlandırılamaz olmasını isteyebilirsiniz. Örneğin bir hesap makinesi programında programın boyutlandırabilir olması anlamsız olacaktır. Bu durumlarda devreye set_resizable() metodu giriyor.

import pygtk
pygtk.require20()
import gtk

class Program(object):
    def __init__(self):
        self.pencere = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.pencere.connect("delete_event", gtk.main_quit)
        self.pencere.set_size_request(300, 300)
        self.pencere.set_resizable(False)
        self.pencere.set_title("Merhaba Dunya")
        self.pencere.set_icon_from_file("simge.png")
        self.pencere.set_opacity(0.7)
        self.pencere.resize(300,300)
        self.pencere.set_position(gtk.WIN_POS_CENTER)
        self.pencere.show()

    def main(self):
        gtk.main()

uyg = Program()
uyg.main()

[1] = İstihza

 

19
Mar

PyGTK python ile arayüz tasarlamayı sağlayan araçlardan sadece biri. PyGTK ile program geliştirmek için sisteminizde bazı paketlerin kurulu olması gerekiyor. Eğer linux kullananıcısi iseniz muhtemelen zaten kuruludur. Eğer ki Windows kullanıyorsanız şunları inirip kurun.

  1. gtk+-win32-runtime
  2. Pygtk
  3. pycairo
  4. pygobject

Bunları kurdukdan sonra artık program geliştirmeye başlayabiliriz!

Merhaba Dünya !

PyGTK’da küçük bir pencere oluşturarak ilk merhaba dünya programımızı yazalım. Programımız şu şekilde.

#-*- coding: utf-8 -*- 

import pygtk # Pygtk'yı içeri aktarıyoruz.
pygtk.require20() # Kullandığımız pygtk sürümünü belirtiyoruz.
import gtk # GTK'yı içeri aktarıyoruz.

pencere = gtk.Window(gtk.WINDOW_TOPLEVEL) # İlk penceremizi oluşturuyoruz.
md = gtk.Label("Merhaba Dünya") # Merhaba dünya etiketimizi tanımladık
md.show() # md'yi gösterdik
pencere.add(md) # penceremize md'yi ekledik.
pencere.show() # penceremizi gösterdik.

gtk.main() # Programımıza hayat verdik.

Evet, GTK ile Basit bir Merhaba Dünya Programı Bundan İbaret. Programı çalıştırdığınızda şöyle bir çıktı elde etmeniz gerek.

Böylece gerçek anlamda ilk GTK uygulamamızı yazdık.

Pencereye Başlık Eklemek

Yaptığımız Merhaba Dünya Programının en büyük 2 eksiği var bunlardan biri Pencerenin başlıksız olması. Başlık eklemek için set_title()’yi kullanacağız. Kullanımı şu şekilde.

pencere.set_title("Merhaba Dünya")

Şimdi yazdığımız Merhaba Dünya programına başlığı ekleyelim.

#-*- coding: utf-8 -*- 

import pygtk # Pygtk'yı içeri aktarıyoruz.
pygtk.require20() # Kullandığımız pygtk sürümünü belirtiyoruz.
import gtk # GTK'yı içeri aktarıyoruz.

pencere = gtk.Window(gtk.WINDOW_TOPLEVEL) # İlk penceremizi oluşturuyoruz.
pencere.set_title("Merhaba Dünya") # Başlık
md = gtk.Label("Merhaba Dünya") # Merhaba dünya etiketimizi tanımladık
md.show() # md'yi gösterdik
pencere.add(md) # penceremize md'yi ekledik.
pencere.show() # penceremizi gösterdik.

gtk.main() # Programımıza hayat verdik.

Programımızı çalıştırdığımızda şu görüntüyü elde edeceğiz.

Programı Doğru Şekilde Kapatmak

Yaptığımız programı şuan konsoldan çalıştırıyoruz. Programı kapattığımızda bi yanlışlık dikkatinizi çekmiş olmalı. “x”‘e bastığınızda konsolda sanki program çalışmaya devam ediyormuş gibi alt satıra geçiş olmuyor. Bu sorunu çözmek için kodlarımıza bir eklemek yapmamız gerek.

pencere.connect("delete_event", gtk.main_quit)

Evet, bu kod ile programımızı doğru bir şekilde kapatabiliyoruz. Koddaki öğelere fazla takılmayın yeri geldiğinde onlarada değineceğiz :) Bu arada buda kodlarımızın tamamlanmış hali.

#-*- coding: utf-8 -*- 

import pygtk # Pygtk'yı içeri aktarıyoruz.
pygtk.require20() # Kullandığımız pygtk sürümünü belirtiyoruz.
import gtk # GTK'yı içeri aktarıyoruz.

pencere = gtk.Window(gtk.WINDOW_TOPLEVEL) # İlk penceremizi oluşturuyoruz.
pencere.connect("delete_event", gtk.main_quit) # Pencereyi düzgün kapatma
pencere.set_title("Merhaba Dünya") # Başlık
md = gtk.Label("Merhaba Dünya") # Merhaba dünya etiketimizi tanımladık
md.show() # md'yi gösterdik
pencere.add(md) # penceremize md'yi ekledik.
pencere.show() # penceremizi gösterdik.

gtk.main() # Programımıza hayat verdik.
26
Ara
Uzun zaman oldu bloguma yazı yazmayalı. Bir aydır laptop 'ım servisteydi ve Pardus 'tan uzaktım! Hiç bir çalışma yapamadım haliyle :/ Benden beklenmeyecek bir hareketle Windows yüklü bir makinede VB.NET çalıştım :D Mouse 'la programlama yapmayı öğrendim :P Express Edition ile akraba oldum vs. vs. Ama Linux kullanamamak gerçekten iğrenç bir duygu anladım bunu. Tamam iş nedeniyle başka işletim sistemleri kullanabilirim. Buna bir itirazım yok. Fakat kendi zevklerim içinde olsa sevdiğim işletim sistemini kullanmalıyım :) Neyse sonunda sorunlar ortadan kalktı ve bu yazıyı Pardus 'tan yazıyorum. Bilgisayarımı servise verdiğim ilk günlerde Özgürlük İçin E-dergiyi çıkarttık. Her ay topluluktan birisinin editörlüğünü yaptığı E-dergide bu ay bu güzel görevi ben üstlendim. Konumuz Pardus ve Bilim olduğundan biraz sıkıcı bir sayı olmasından korktuğum oldu fakat topluluğumuzun güzel çalışması ile hem eğitici bu sıradada eğlendiren bir sayıya ulaştık. Emeği geçen herkese bir kez daha teşekkürler :)

Bu sıralar Xfce masaüstü ortamı için paket yapmak, belgelendirme yapmak ve pygtk çalışarak zamanımı geçirme düşüncesiydim. Umarım bu güzel masaüstü ortamı için yararlı işler yapabilirim. Tabi bu uğraşlarımda bana büyük desteği olan Gökmen 'e teşekkürler :) Hazır pygtk demişken pygtk çalışanlar için etkileşimli kabuğa rastladım geçenler onun linkini vermek istiyorum. Burada ki kodu bir metin editörüne yapıştırıp, heheh.py ile kaydettikten sonra konsoldan çalıştırdığınızda pygtk için etkileşimli kabuğa sahip oluyorsunuz. Umarım yararlı olur.

Şimdilik bu kadar yeter. Bir sonraki yazıda görüşmek üzere...