December 19, 2017

Yani yerleşim bileşenleri. Kutu, kalbur başkaları da var.

http://python-gtk-3-tutorial.readthedocs.io/en/latest/layout.html

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.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 19, 2017

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..

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 19, 2017

Yazdığın kodu paylaşabilir misin.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 19, 2017
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();
}

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 19, 2017

' 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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 19, 2017

Not: giriş1 ve giriş2 deki verilerin int yada float olacağını varsayıyoruz !

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 19, 2017
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.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 19, 2017
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..

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 19, 2017

:-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..

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 19, 2017

Ufak bir ipucu veriyorum. Artık senden bu bilgilerle basit bir hesap makinesi bekliyoruz ;-)

import gtk.Ana;
import gtk.AnaPencere;
import gtk.Düğme;
import gdk.Olay;
import gtk.Giriş;
import gtk.Box;

import std.stdio;
import std.conv;

class Pencere: AnaPencere
{
   Düğme düğme;
   Giriş giriş, giriş2, giriş3;
   Box dikeyKutu;

   this()
   {
       super("Toplama");
       this.boyAyarla(200, 100);
       dikeyKutu = new Box(DİKEY, 6);
       ekle(dikeyKutu);

       giriş = new Giriş();
       dikeyKutu.atSepete(giriş, true, true, 0);

       giriş2 = new Giriş();
       dikeyKutu.atSepete(giriş2, true, true, 0);

       giriş3 = new Giriş();
       dikeyKutu.atSepete(giriş3, true, true, 0);

       düğme = new Düğme("Hesapla", &kopyala);
       dikeyKutu.atSepete(düğme, true, true, 0);

       tümünüGöster();
   }

   void kopyala(Düğme düğme)
   {
       int ilk = to!int(giriş.getText());
       int ikinci = to!int(giriş2.getText());
       auto sonuç = ilk + ikinci;
       giriş3.metinBelirle(to!string(sonuç));

   }
}

void main(string[] seçenekler)
{
   Ana.ilklendir(seçenekler);
   Pencere pencere = new Pencere();
   Ana.çalıştır();
}

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]