Gtk ile çok kolay bir şekilde geliştirdiğiniz uygulamayı sistem çekmecesinde gösterebilirsiniz.
Ufak bir örnek kod veriyorum. Onun üzerinden anlatacağım.
import pygtk
import gtk
class ShowIcon:
def __init__(self):
self.icon = gtk.StatusIcon()
self.icon.set_from_file('gtk.png')
self.icon.set_tooltip_text('Hello Python!!!')
self.icon.set_visible(True)
self.icon.connect("activate", self.hello)
gtk.main()
def hello(self, widget):
print 'Hello Python !!!'
if __name__ == '__main__':
icon = ShowIcon()
6. satırda asıl işimizi yapacak olan StatusIcon nesnesini yaratıyoruz.
7. satırda sistem çekmecesinde hangi ikonun görüntüleneceğini belirtiyoruz. set_from_file ikonu dosyadan alacağımız anlamına geliyor. Eğer gtk’nın sunduğu standart ikonları kullanmak istiyorsanız set_from_stock kullanmalısınız.
icon.set_from_stock(gtk.STOCK_ABOUT)
8. satırda ikonun üzerine geldiğimizde görünmesini istediğimiz yazıyı belirliyoruz.
9. satırda ikonun başlangıçtaki görünürlüğünü belirliyoruz. Bu satırı yazmasak da görünür başlıyor.
10. satırda ikonun “activate” sinyali aldığında çağırmasını istediğimiz metodu belirliyoruz. Kısacası üzerine tıklandığında ne iş yapacağını belirtiyoruz. “activate” yerine “popup_menu” yazarsak ikona sağ tıkladığımızda çağrılacak metodu belirliyoruz.
11. gkt.main() haydi yapalım şu işi manasında 🙂
Ayrıntılı dökümanı PyGtk Belgelerinde bulabilirisiniz. Yukarıda verdiğim kodu ve benim kullandığım ikonu buradan indirebilirsiniz.
PyGtk ile ara yüzüzünü hazırladığım bir program içinde thread kullanmam gerekiyordu. Kod çalışıyordu fakat thread işlemi istediğim gibi çalışmıyordu. Arayüzde bir değişiklik olduğu zaman thread çalışıyor, onun dışında hiç bir şekilde tepki vermiyordu.
Uzun süre hatanın kodda olabileceğini düşündüm. Ama sonunda python gtk.main() ve thread 3’lüsünü aynı sorgu içinde googleda aratınca cevabı buldum. Gtk’ya thread kullandığımı anlatmam gerekiyordu 🙂
gtk.gdk.threads_init()
Bu satırı kodumun başına eklediğimde herşey istediğim gibi çalışmaya başladı 🙂
Sizde böyle bir sorunla karşılaşırsanız aklınızda bulunsun 🙂
Komut satırı programları -h yada –help gibi parametreler alırlar. Bu alınan parametrelerin kolay kullanılması için getopt adında bir kütüphane yaratılmış. Bu kütüphane kullanlanılarak çok rahat böyle programlar yazılabilir.
Bende bunun için küçük bir örnek yazdım.
Örnek
Buradaki yazımdan esinlenip yazdım bunu. Azıcık java öğrendim artık uygulama yapma zamanıdır. Eminim daha güzel (hatta belki benim ki iğrenç bi koddur(:) yazılabilir. Ama şimdilik bunu yapabiliyorum.
public class Sayisal {
int[] _kupon = new int[6];
int _num;
public Sayisal(){
int sira = 0;
while (sira < 6) {
_num = (int) (1 + Math.random() * 49);
if (!varmi(_kupon, _num))
_kupon[sira++] = _num;
}
}
private boolean varmi(int[] kupon, int num) {
for (int x: kupon) {if (x == num) return true;}
return false;
}
public String toString(){
String kuponStr = "";
for (int i = 0; i < 6; i++) kuponStr += (_kupon[i] + " ");
return kuponStr;
}
public static void main(String[] args){
byte kuponSayisi;
if (args.length == 0) kuponSayisi = 1;
else kuponSayisi = Byte.parseByte(args[0]);
for (int i = 1; i <= kuponSayisi; i++){
System.out.print(" " + i + ".kupon: ");
System.out.println((new Sayisal()).toString());
}
}
}
java Sayisal
şeklinde girerseniz tek kolon oynayacaktır. eğer
java Sayisal 4
derseniz 4 kolon oynayacaktır.
Sayısal Kaynak kodları.
Sayısal derlenmiş hali.