by A.Gökhan, M.Sc. | Ağustos 22 15:43
Merhaba,
Bu yazıda, GTK ile PHP kullanarak masaüstü program geliştirmeye değineceğim. Daha önce bununla ilgili temel bazı konuları 2 farklı başlık altında işlemiştim. Linklerini paylaşayım:
1) PHP-GTK Kullanarak Masaüstü Uygulama Geliştirmek: Basit bir Arayüz Yapımı[1]
2) PHP-GTK ile Pencere Oluşturma ve Widget Yerleştirme
Web tabanlı programlama çerçevesinde veri alışverişi büyük önem taşımaktadır. Zira daha önceki konularda, link üzerinden, form alanları üzerinden ya da veritabanlarından verileri çekip üzerinde işlemler yapmıştık. Şimdi konumuz PHP-GTK ve PHP’yi masaüstü yazılım olarak kullanmaktayız. Verileri çekip, bunları işlemek ihtiyacı her zamanki gibi burada da karşımıza çıkacaktır
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
$window = new GtkWindow(); $window->set_size_request(280, 90); $window->connect_simple('destroy', array('Gtk','main_quit')); $window->set_title("input Üzerinden Value Alma"); $window->add($vbox = new GtkVBox()); $baslik = new GtkLabel("Veri Gönderimi-Value Alma\nVeri girip Enter'a Bas!"); $baslik->modify_font(new PangoFontDescription("Sans bold")); $baslik->modify_fg(Gtk::STATE_NORMAL, GdkColor::parse("#333")); $baslik->set_size_request(0, 30); $vbox->pack_start($baslik, 0, 0); $hbox = new GtkHBox(); $vbox->pack_start($hbox, 10, 100); $hbox->pack_start(new GtkLabel("Veri Giriniz."), 0, 10); $veri = new GtkEntry(); $hbox->pack_start($veri, 0, 30); $veri->connect('activate', 'verigir'); function verigir($obje) { $girilen = $obje->get_text(); if (!$girilen==0 && strlen($girilen) && 3) echo "Girilen veri = $girilen\n"; elseif ($girilen=='') echo "Veri girmeniz gerekmektedir!\n"; else echo "En az 4 karakter girmelisiniz!\n"; $obje->grab_focus(); } $window->show_all(); Gtk::main(); |
Yukarıdaki program çok basit bir form aracılığıyla veri taşıma ve işleme yöntemidir. Verilerin girileceği bir text alanı oluşturduk. Daha sonra verileri alıp ekrana yazdırdık.
Şekil incelendiğinde, bir text alanı, veri girilmesini beklemektedir. Veri girişi yapıldıktan sonra enter tuşuna basıldığı an PHP-GTK if, elseif ve else koşullu durumları göz önüne alınarak ekrana veriyi yazdıracaktır. Eğer veri en az 4 karakter olarak girilirse veri ekrana echo fonksiyonu ile yazdırılacaktır. 4’ten az sayıda karakter girilip enter tuşuna basıldığında ekranda bu durum ile ilgili bir hata mesajı gösterilecektir. Hiç veri girilmemiş ve enter tuşuna yine de basılmış ise yine durumu açıklar nitelikteki hata mesajı ekrana yazdırılacaktır.
Bütün bunlar yapılırken PHP-GTK ile PHP arasında kodlama açısında hiçbir fark olmadığı, aksine tam anlamıyla PHP kodlaması yapıldığı görülmektedir. Zira if, else, elseif koşul durumları, echo fonksiyonu kullanıldığı rahatlıkla görülebilmektedir.
Bu kodlamada daha önce görmediğiniz bazı yöntemler ve fonksiyonlar mevcuttur. PHP-GTK’nin geniş kütüphanesinde bulunan her bir fonksiyon gtk.php.net adresinde incelenebilir. Fakat bu program için bilinmeyenlere göz atmak yararlı olacaktır.
1 2 3 |
$window->add($vbox = new GtkVBox()); $hbox = new GtkHBox(); |
PHP-GTK kütüphanesi incelendiğinde vbox ve hbox ifadeleri sıkça karşımıza çıkacaktır. Dikey ve Yatay kelimelerinin vertical ve horizontal olarak İngilizce’den çevirmeleri, programlama dillerinde de uygulanmaktadır. vbox() dikey olarak büyüyen, hbox() ise yatay olarak büyüyüp ölçülendirilebilen kutular oluşturmak için kullanılmaktadır.
1 2 3 |
$baslik = modify_font(new PangoFontDescription("Sans bold")); $baslik->modify_fg(Gtk::STATE_NORMAL, GdkColor::parse("#333")); |
$baslik degiskeni ile belirlenmiş karakter katarının font özelliklerinin ayarlanması işlemi burada gerçekleştirilmiş ve kalın harfler oluşturulmuştur. Ayrıca yazı rengi #333 olarak ayarlanmıştır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// Yeni bir veri giriş (input) alanı oluşturuluyor. $veri = new GtkEntry(); // activate yöntemine verigir() fonksiyonu ilişkilendiriliyor. $veri->connect('activate', 'verigir'); //verigir() fonksiyonu oluşturuluyor. function verigir($obje) { //Form alanına girilen veri alınıyor. $girilen = $obje->get_text(); //Girişi yapılan veri eğer boş değil ve karakter sayısı 3 den büyük ise, //Girilen veri değeri yazdırılıyor. //Şekil 6.4.8 if (!$girilen==0 && strlen($girilen) && 3) echo "Girilen veri = $girilen\n"; //Eğer veri girilmemişse, hata mesajı yazdırılıyor. //Şekil 6.4.9 elseif ($girilen=='') echo "Veri girmeniz gerekmektedir!\n"; //Eğer girilen verinin karakter sayısı 4’ten küçük ise, //Hata mesajı yazdırılıyor. //Şekil 6.4.7 else echo "En az 4 karakter girmelisiniz!\n"; } |
Yukarıdaki kodlar programın en önemli noktalarını oluşturmaktadır. Çünkü form alanından verilerin alınıp işlendiği kodlama buradadır.
1 |
$obje->grab_focus(); |
Bu özellik, program çalıştırıldığında kolaylıkla görülebilecek bir olayı tetiklemektedir. Text alanına veri girip enter tuşuna basmakla birlikte konsol üzerinde bir mesaj alınmaktadır. Aynı zamanda pencere üzerinde giriş bölümü aktif olarak veri girilmesini beklemektedir. Yani text alanı aktiftir. Bunu sağlayan da grab_focus() özelliğidir.
Özellik
|
Değer
|
İşlev
|
set_position() | (Gtk::WIN_POS_CENTER) | Pencerenin ekrandaki konumunu ayarlar |
set_title() | ($title [string]) | Pencerenin başlık bilgisini ayarlar |
maximize() | Pencereyi tam ekran yapar | |
set_size_request() | ($genislik[int],$yukseklik[int]) | Pencerenin genişlik ve yükseklik ayarını yapar |
set_max_width_chars() | (integer)
Örnek: (10) |
Belirtilen widget üzerindeki belirtilen genişlik ölçüsü sınırlarına getirilecek olan maksimum karakter sayısını ayarlar |
get_max_width_chars() | (integer) | Maksimum karakter kapasitesi |
set_line_wrap() | BINARY(true[1], false[0]) | Karakter katarını biçer ve pencere ölçüleri dahilinde yazdırır. |
set_decorated() | BINARY(true[1], false[0]) | Pencerenin kenarlarını kaldırır. |
grab_focus() | Seçili text kutusunun kullanılmasını sürekli aktif yapar. | |
add() | Belirtilen widgeti pencereye ekler. | |
unmaximize() | Pencere tam ekran olarak ayarlanmamışsa, orijinal boyutlarına döndürür |
Bu konuda kullanışlı örnekleri sonraki yazılarda paylaşacağım. Umarım yararlı olmuştur.
Görüşmek üzere!
Source URL: http://www.phpservisi.com/php-gtk-ile-form-kullanarak-kullanicidan-veri-alma/
Copyright ©2024 Phpservisi.com unless otherwise noted.