Forum: Diğer Konular RSS
GtkD Modül özellikleri
Sayfa:  önceki  1  2  3  4  5  6  7  sonraki 
erdem (Moderatör) #16
Üye Tem 2009 tarihinden beri · 1050 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13111
Çünkü anladığım kadarıyla düğme2'yi göreceli olarak düğme1'in bir tarafına yerleştiriyoruz. Yani sağına altına ya da köşesine.
        //kalbur.attach(düğme2,1,0,2,1);
        //kalbur.attach(düğme2,0,1,2,1);
        kalbur.attach(düğme2,1,1,2,1);
cos00kun #17
Üye Kas 2014 tarihinden beri · 223 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
hiç öyle düşünmemiştim ama çok doğru bu.. buna ek olarak aşağıdaki kodu çalıştırıp edindiğim tecrübe doğrultusunda şunu da söyleyebiliyoruz sanırım;

.attach() işlevini kullanırken aslında gridi genişleyebilen bir hücre alanı gibide düşünebiliriz  zira eklenen her yeni nesne (widget işte adı her ne ise) aslında hücreyi yukarı-aşağı yada sağa-sola olarak bir genişletme yapmaktadır. Bu durumda ilk nesne baz alınmak kaydıyla yukarıda bahsettiğimiz parametreleri değerleri kadar oynatabilmekteyiz..  Örneğimize bakarsak;
import gtk.Main;
import gtk.MainWindow;
import gtk.Grid;
import gtk.Button;
 
class Pencere: MainWindow
{
    Grid kalbur;
    Button düğme1, düğme2, düğme3,düğme4,düğme5,düğme6,düğme7;
 
    this()
    {
        super("Kalbur örneği");
        kalbur = new Grid();
        add(kalbur);
    resize(560,250);
 
        düğme1 = new Button("Düğme1");
        düğme2 = new Button("Düğme2");
        düğme3 = new Button("Düğme3");
        düğme4 = new Button("Düğme4");
        düğme5 = new Button("Düğme5");
        düğme6 = new Button("Düğme6");
        düğme7 = new Button("Düğme6");
 
        kalbur.add(düğme1);
        kalbur.attach(düğme2,1,1,1,1);
        kalbur.attach(düğme3,2,2,1,1);
        kalbur.attach(düğme4,3,3,1,1);
        kalbur.attach(düğme5,4,4,1,1);
        kalbur.attach(düğme6,5,5,1,1);
        kalbur.attach(düğme7,2,6,1,1);
 
        showAll();
    }
}
 
void main(string[] değişkenler)
{
    Main.init(değişkenler);
    auto pencere = new Pencere();
    Main.run();
}
normalde kalbur.attach(düğme7,2,6,1,1); bu satırı düğme1 den sonra direk eklemiş olsaydık düğme birde mevcut gridimiz aslında 1 satır ve 1 sutunluk bir yer işkal edeceğinden dolayı sadece düğme1 den 1 sutun yada 1 satır hareket mümkündü Oysa          kalbur.attach(düğme6,5,5,1,1); ifadesi ile aslında grid 5 satır ve 5 sutunluk genişlemiş olduğundan dolayı düğme1 baz alınmak kaydıyla kalbur.attach(düğme7,2,6,1,1); ifadesindeki 2 ve 6 iparametreleri haliyle iş yapacaktır..
desteğiniz için çok sağolun
E=mc^2
cos00kun #18
Üye Kas 2014 tarihinden beri · 223 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Erdem hocam selamlar..
sitenizdeki bir örnek hakkında bir soru soracağım;
import gtk.Ana;
import gtk.AnaPencere;
import gtk.Düğme;
import gtk.Kutu;
 
import std.stdio;
 
class Pencere: AnaPencere
{
    Kutu anaKutu;
    Düğme düğme;
 
    this()
    {
        super("Düğme örneği");
 
        çerçeveGenişliğiBelirle(10);
 
        anaKutu = new Kutu(YATAY, 6);
        ekle(anaKutu);
 
        düğme = new Düğme("Bana tıklayın");
        düğme.tıklandığında(&banaTıklayınaTıklandı);
        anaKutu.atSepete(düğme, true, true, 0);
 
        düğme = new Düğme("_Aç");
        düğme.tıklandığında(&açDüğmesineTıklandı);
        anaKutu.atSepete(düğme, true, true, 0);
 
        düğme = new Düğme("_Kapat");
        düğme.tıklandığında(&kapatDüğmesineTıklandı);
        anaKutu.atSepete(düğme, true, true, 0);
 
        tümünüGöster();
    }
 
    void banaTıklayınaTıklandı(Düğme düğme)
    {
        writeln("\"Bana tıklayın\" düğmesine tıklandı");
    }
 
    void açDüğmesineTıklandı(Düğme düğme)
    {
        writeln("\"Aç\" düğmesine tıklandı");
    }
 
    void kapatDüğmesineTıklandı(Düğme düğme)
    {
        writeln("Uygulamayı kapatıyorum");
        Ana.çıkış();
    }
}
 
void main(string[] değişkenler)
{
    Ana.ilklendir(değişkenler);
    auto pencere = new Pencere();
    Ana.çalıştır();
}

Burada   düğme.tıklandığında(&banaTıklayınaTıklandı); ifadesinde "&banaTıklayınaTıklandı" ile anladığım kadarıyla banaTıklayınaTıklandı işlevi çalıştırılıyor.. Bu noktada "&" yu kullanmamızın sebebi nedir ?

ayrıca aşağıdaki kısımda;

    void banaTıklayınaTıklandı(Düğme düğme)
    {
        writeln("\"Bana tıklayın\" düğmesine tıklandı");
    }


banaTıklayınaTıklandı() işlevinde (Düğme düğme) nesnesi arguman olarak veriliyor fonksiyon içinde hiç kullanılmamasına rağmen ?

Teşekkür ederim..
E=mc^2
erdem (Moderatör) #19
Üye Tem 2009 tarihinden beri · 1050 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
cos00kun:
Bu noktada "&" yu kullanmamızın sebebi nedir ?

Bu basitçe düğme tıklandığında bu işlevi çağır demek.

cos00kun:
banaTıklayınaTıklandı() işlevinde (Düğme düğme) nesnesi arguman olarak veriliyor fonksiyon içinde hiç kullanılmamasına rağmen ?

    gulong addOnClicked(void delegate(Button) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
    {
               /* .. */
    }

tıklandığında addOnClicked işlevinin bildirim şu şekilde. Parametre olarak da bir düğme alıyor. Böylece addOnClicked işlevinin de hangi düğmenin tıklandığından haberi olmuş oluyor.
cos00kun #20
Üye Kas 2014 tarihinden beri · 223 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
GtkD kütüphanesinde  Layout sınıfı ne işe yarıyor peki ? Layoutların genelde kullanım amacı nedir ?
teşekkürler
E=mc^2
erdem (Moderatör) #21
Üye Tem 2009 tarihinden beri · 1050 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yani yerleşim bileşenleri. Kutu, kalbur başkaları da var.

http://python-gtk-3-tutorial.readthedocs.io/en/latest/layo…

Buradan görebilirsin.

Burada anlatıldığına göre bir sürü görsel kütüphane tam konumlama kullanarak bileşenleri pencerede belirli bir konuma yerleştirmeye izin veriyormuş. GTK+ ise bileşenlerin konum ve boyutunu belirtmek yerine görsel bileşenleri satırlar, sütünlar ve tablolar kullanarak pencereye yerleştiriyor. Bunu da yerleşim bileşenleri, kablar kullanarak yapıyoruz.

O zamanlar Ubuntu 12.04 altında çalıştığım ve ortamımda GTK+ kütüphanesinin son sürümü olmadığı için, yerleşim bileşenlerinin bir kısmını derslere eklemiştim.
cos00kun #22
Üye Kas 2014 tarihinden beri · 223 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Evet farkettim maalesef C# taki gibi Pencerenin istediğimiz bir bölümüne istediğimiz boyutta yerleşim yapamıyoruz.. satır/sutun kavramı yada bunları kutulara/tablolara bölerek doldurma şeklinde gidiyor.. Bu noktada yaptığım denemelerde Layout sanırım bu konuda bizi biraz rahatlatıyor gibi.. put() işlevi ile istediğimiz konuma yerleştirme yapabiliyoruz buda benim için bayağı iyi bir gelişme oldu.. çünkü diğer kablar topyekün bir sonuç vermiyor hepsinin bu düzenleme işlerinde bir eksisi oluyor idi..

  .put(giriş1,200,50);
  .put(giriş2,200,80);

gibi bir pixel değerleriyle istediğimiz yere konumlama yapabiliyoruz..

Bu arada iki entry girişinden değer okutup bir başka Entry kutucuğuna sonuç yazdırmaya çalışıyorum.. bu değerleri yani Entry kutucuğundan nasıl okutup bir 3cü Entry kutucuğuna atabiliyoruz ? işlemi kendim yapıyorum sadece hangi işlev ve parametreler kullanılıyor onu bilmem yeterlidir..
teşekkürler..
E=mc^2
Bu mesaj cos00kun tarafından değiştirildi; zaman: 2017-12-19, 04:34.
erdem (Moderatör) #23
Üye Tem 2009 tarihinden beri · 1050 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yazdığın kodu paylaşabilir misin.
cos00kun #24
Üye Kas 2014 tarihinden beri · 223 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
import gtk.Main;
import gtk.MainWindow;
import gtk.Layout;
import gtk.Label;
import gtk.Entry;
import gtk.Button;
import std.stdio;
 
class Pencere : MainWindow
{
 
    this()
    {
        super("Görsel Denemeleri..");
 
        auto düzen = new Layout(null, null);
        auto etiket1 = new Label("İKİ SAYIYI TOPLUYORUZ..");
        auto giriş1 = new Entry();
        auto giriş2 = new Entry();
        auto giriş3 = new Entry();
        auto düğme1 = new Button("TOPLA!");
 
        setSizeRequest(500, 300);
        move(200, 200);
        düzen.setSizeRequest(95, 85);
 
        düzen.put(etiket1, 5, 5);
        düzen.put(giriş1,200,50);
        düzen.put(giriş2,200,80);
        düzen.put(giriş3,200,150);
        düzen.put(düğme1,55,150);
        add(düzen);  
        showAll();
 
        düğme1.addOnClicked(&topla);
    }
 
    void topla(Button düğme1)
    {
        writeln("toplama");
        giriş3.setText(giriş1.getBuffer()+giriş2.getBuffer());
    }
}
 
void main(string[] args)
{
    Main.init(args);
    new Pencere();
    Main.run();
}
E=mc^2
cos00kun #25
Üye Kas 2014 tarihinden beri · 223 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
    giriş3.setText(giriş1.getBuffer()+giriş2.getBuffer()); burada saçmaladığımın farkındayım ;-)  sadece bir çalışma idi burayı çözersek zaten iş bitecek
E=mc^2
cos00kun #26
Üye Kas 2014 tarihinden beri · 223 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Not: giriş1 ve giriş2 deki verilerin int yada float olacağını varsayıyoruz !
E=mc^2
erdem (Moderatör) #27
Üye Tem 2009 tarihinden beri · 1050 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
import gtk.Ana;
import gtk.AnaPencere;
import gtk.Düğme;
import gdk.Olay;
import gtk.Giriş;
import gtk.Box;
 
import std.stdio;
 
class Pencere: AnaPencere
{
    Düğme düğme;
    Giriş giriş, giriş2;
    Box dikeyKutu;
 
    this()
    {
        super("Giriş kutusu metin kopyalama");
        this.boyAyarla(200, 100);
        dikeyKutu = new Box(DİKEY, 6);
        ekle(dikeyKutu);
 
        giriş = new Giriş();
        giriş.metinBelirle("birinci");
        dikeyKutu.atSepete(giriş, true, true, 0);
 
        giriş2 = new Giriş();
        giriş2.metinBelirle("ikinci");
        dikeyKutu.atSepete(giriş2, true, true, 0);
 
 
        düğme = new Düğme("Bana tıklayın", &kopyala);
        dikeyKutu.atSepete(düğme, true, true, 0);
 
        tümünüGöster();
    }
 
    void kopyala(Düğme düğme)
    {
        giriş.metinBelirle(giriş2.getText());
 
    }
}
 
void main(string[] seçenekler)
{
    Ana.ilklendir(seçenekler);
    Pencere pencere = new Pencere();
    Ana.çalıştır();
}
Şu şekilde sanırım yapabilirsin. Burada toplama yapmazdan önce metin değerleri sayısal değere çevirmen gerekebilir.
cos00kun #28
Üye Kas 2014 tarihinden beri · 223 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
import gtk.Main;
import gtk.MainWindow;
import gtk.Layout;
import gtk.Label;
import gtk.Entry;
import gtk.Button;
import std.stdio;
 
class Pencere : MainWindow
{
 
    this()
    {
        super("Görsel Denemeleri..");
 
        auto düzen = new Layout(null, null);
        auto etiket1 = new Label("İKİ SAYIYI TOPLUYORUZ..");
        auto giriş1 = new Entry();
        auto giriş2 = new Entry();
        auto giriş3 = new Entry();
        auto düğme1 = new Button("TOPLA!");
 
        setSizeRequest(500, 300);
        move(200, 200);
        düzen.setSizeRequest(95, 85);
 
        düzen.put(etiket1, 5, 5);
        düzen.put(giriş1,200,50);
        düzen.put(giriş2,200,80);
        düzen.put(giriş3,200,150);
        düzen.put(düğme1,55,150);
        add(düzen);  
        showAll();
 
        düğme1.addOnClicked(&topla);
    }
 
    void topla(Button düğme1)
    {
        writeln("toplama tıklandı");
        giriş3.setText(giriş1.getText());
    }
}
 
void main(string[] args)
{
    Main.init(args);
    new Pencere();
    Main.run();
}
Bu niye çalışmıyor?  :scared: ufak bi ayrıntıyı atlıyorum sanırım ama bulamadım hala.. giriş3.setText(giriş1.getText()); bu satırda "Error: undefined identifier `giriş3`" hatası alıyorum..
E=mc^2
acehreli (Moderatör) #29
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4592 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Pencere sınıfına hiç üye vermemişsin. this() içindeki giriş3 vs. değişkenler hep yerel değişken; yaşamları this'ten çıkıldığında sona erer. Şunun gibi olması gerek (yalnızca giriş3 için gösteriyorum):
class Pencere : MainWindow
{
    // ...
    Entry giriş3;    // şimdi Pencere'nin üyesi
 
    this()
    {
        // ...
        giriş3 = new Entry();    // şimdi ilklendi (Dikkat: 'auto' yok!)
    }
}

Ali
cos00kun #30
Üye Kas 2014 tarihinden beri · 223 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
 :-D
D dilini bitirmeden GtkD yürütürsen böyle olur  elemanlara yaşam hakkı bile tanımadım  :-)
sorunu anladım teşekkürler..
E=mc^2
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  önceki  1  2  3  4  5  6  7  sonraki 
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2018-01-21, 18:27:03 (UTC -08:00)