Top level widget. 1 Kaynak kodları yazarken widgetlerin özgün (original) adlarını kullanmak zorundayız.



Benzer belgeler

Bolum 9. Konu Başlıkları

Android Ders Notları

Mantıksal İşlemler. 7.1 true, false, nil

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Microsoft Word 2010 ara yüzündeki bölümler aşağıda gösterilmiştir.

Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri

5.Slayt ana hat görünümü 6.Görev bölmesi penceresi 7.Not alanı 8.Durum çubuğu

HSancak Nesne Tabanlı Programlama I Ders Notları

Aaraçlar Menüsünden Seçeneklerden Görünüm

Java Programlamada Paket Yapısı Ve Import

BOOTLOADER MANUAL DOCUMENT

GtkD ile Görsel Programlama

KOD PARÇACIKLARI 1 / 5

MS POWERPOINT Şekil 111 Powerpoint 2010 Programını Başlatmak

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end

BİL BİLGİSAYAR PROGRAMLAMA (JAVA)

Integer Sınıfı. 9.1 Integer Sınıfına Uygulanan Başlıca Metotlar. Ruby de tamsayılar için kullanılan Fixnum ve Bignum sınıflarını üreten sınıftır.

SAB 103 TEMEL BİLGİSAYAR KULLANIMI


Kullanım Kılavuzu

a. Giriş sekmesi: 1. Paragraf bölümünde Madde İşaretleri veya Numaralandırma seçeneklerinden istediğinize tıklayın.

Scratch 2.0 GOL OYUNU

public static int Toplam int x, int y

YZM 2105 Nesneye Yönelik Programlama

TEMEL BİLGİSAYAR. Ders Notları. Yrd. Doç. Dr. Seyit Okan KARA

NESNEYE YÖNELİK PROGRAMLAMA

Aşağıdaki örnekte, aynı düzen tablosu ve hücreleri içerikle birlikte gösterilmektedir.

Glade. hitokiri. Eylül, 2012

Revit 2012 Construction Modeling Araçları

(Sözlük, dictionary, birleşik array, map)

4. Bölüm Programlamaya Giriş

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi KULLANICI ARAYÜZ. BLM401 Dr.Refik SAMET

Dinamik Kodlama. [X] [X] Yeni Fonksiyon

Web sayfalarında yapılan her çalışma ve düzenleme tablolar aracılığı ile yapılır. Dolayısıyla çoğu web sayfalarında tablo kullanmak zorunluluktur.

Açılan programın pencere görünümü aşağıdaki gibidir. 2. Araç Çubuğundan kaydet düğmesi ile

Yine benzer şekilde hücreler içine yazılan yazıların renklerini değiştirebiliriz. Bunun için tüm satırı veya sütunu yine fareyle seçmek durumundayız.

Ruby. Prof.Dr.Timur Karaçay Başkent Üniversitesi

12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 )

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği

Bu Hafta Öğreneceklerimiz

2000 de Programlarla Çalışmalar

DYNED İLE İLGİLİ SIRASIYLA HANGİ İŞLEMLER YAPACAĞIZ

LABORATUVAR ÇALIŞMASI 1 - Python a Giriş

Microsoft PowerPoint

UYGULAMALAR. İkinci liste kutusu (List 2) Birinci liste Kutusu (List 1) Metin Kutusu

Windows 10 için Java JDK 8 ve NetBeans IDE 8.2 Kurulumu Detaylı Anlatım

SAB 103 TEMEL BİLGİSAYAR KULLANIMI

SAB 103 TEMEL BİLGİSAYAR KULLANIMI

Kopyalama ve Taşıma konularıyla ilgili daha değişik uygulamalar yaparak bu konunun pekiştirilmesini sağlamanız yararınıza olacaktır.

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

7. BELGEYE RESİM EKLEME, YAZIM ve ÇİZİM ÖZELLİKLERİ

POWER POINT Power Point ile Çalışmaya Başlamak

KISIM I: TEMEL KONULAR 1

Akış Kontrol Mekanizmaları

Kaynak Kodlardan Derleme. Turquaz Muhasebe. Versiyon 0.2. Hüseyin Ergün. 26 Mart 2005

FireBug eklentisini eklentiyi yazan sitesinden veya FireFox un eklentiler indirebilirsiniz.

Genel Programlama II

HSancak Nesne Tabanlı Programlama I Ders Notları

KENDİ ÇİZİM PROGRAMIMIZI OLUŞTURALIM

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir.

Hizalama Word dokümanlarınızda oluşturduğunuz veya oluşturacağınız metinlerin hizalamasını yapabilirsiniz. Bu işlem için:

İŞLETİM SİSTEMLERİ. İŞLETİM SİSTEMİ Kavramı. Klasör ve Dosya Mantığı. Klasör ve Dosya Mantığı

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

Module ve Mixin Module nedir? 17.2 Neden Module?

YENİ DÜNYALAR REKLAM POWERLED KULLANIM KILAVUZU

Laboratuvar Çalışması Konak Bilgisayarları Bağlama ve Yapılandırma

SIMAN KULLANIM KILAVUZU

VERİ TABANI UYGULAMALARI

İçindekiler. Akıllı Tahta Uygulaması (ATU) Kullanma Kılavuzu. İçindekiler. Bölüm 1: Uygulama Hakkında Genel bilgi 2

Görsel Programlama DERS 08. Görsel Programlama - Ders08/ 1

BİLGİSAYARDA OFİS PROGRAMLARI BİÇİMLENDİRME

Java da İstemci Tarafı Uygulamalar

MS WORD 5. BÖLÜM. Şekil Sayfa Düzeni Sekmesi. Şekil Temalar Grubu

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

MS WORD 4.BÖLÜM. Bölüm Adı: NESNE EKLEME Bölümün Amacı: Belgeye nesne ekleme işlemlerini gerçekleştirmek.

KENDİ ÇİZİM PROGRAMIMIZI OLUŞTURALIM

PYTHON PROGRAMLAMA DİLİ

SCRATCH KONU ANLATIM KAĞIDI BAY KODLAMA (baykodlama.blogspot.com)

T.C. istanbul ÜNiVERSiTESi ÖĞRENCi BiLGi SiSTEMi. ÖĞRETiM ELEMANI KULLANIM KILAVUZU

ÖNDER BİLGİSAYAR KURSU. Microsoft Office Kursu Eğitim İçeriği


JAVA DÖNGÜ DEYİMLERİ. For Döngüsü

6. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

BLGM 354 DENEY 1 * GİRİŞ

İçindekiler. KISIM 1 Temel Programlama 1. Bölüm 1: Programlama ve Python 3. Bölüm 2: Değişkenler, İfadeler ve Deyimler 13. Giriş 4

Kullanım Kılavuzu Milli Eğitim Bakanlığı 2010

Yazdır Menüsü. Yazdır menüsü resimli anlatım. Yazdır Menüsü. Baskı Önizleme Gerçekleştirmek

Dizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir.

Program Çözümleme. Aşağıdaki örneklerde printf() ve scanf() fonksiyonlarının işlevleri gösterilmektedir. Liste 1.1. Çözümleme:

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

ASP.NET ile Bir Web Sitesi Oluşturma

Python Programlama Dili

BİLGİSAYARDA OFİS PROGRAMLARI NESNE İŞLEMLERİ

Scream! e gelen veri akışlarından bazılarını diğer bir kurum yada bilgisayarla paylaşmak için kullanılabilir.

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

Transkript:

2 Tk Sınıfı 2.1 Ana Taşıyıcı Top level widget Widget leri 1. incelemeye başlamadan önce, GUI alet çantalarının çalışma ilkelerini açıklamak yararlı olacaktır. Bir görsel arayüz hazırlarken, öncelikle widgetleri taşıyacak bir zemine gerekseme vardır. Bu zemin en alta konulan widgettir. Tkinter de en alttaki zemin yerine kullanılan widget, genellikle, Tk sınıfından türetien bir nesnedir. Görsel arayüzü monitörde açılan bir pencere olarak düşünürsek, açılan bu pencere görsel arayüzün zeminidir. Düğmeler, etiketler, yazı alanları gibi öteki görsel arayüz aletlerini (widgets) Tk sınıfından türetilecek bu zemin üzerine koyacağız. Bütün widgetleri taşıyan bu zemine anataşıyıcı (top level widget) diyoruz. Benzetmek gerekirse, bir galeride rasimlerin üzerine konulduğu duvar (ya da pano) anataşıyıcıdır. Duvar üzerine çeçeveler, çerçevelerin içine resimler, resimlerin üzerine yazılar konulabilir. Görsel arayüz araçlarının (widgets) anataşıyıcı üzerine konuşlandırılmaları da böyledir. En altta anataşıyıcı vardır. Onun üzerine widgetler konulur. Bazen widgetler üst üste olabilir. Böyle olduğunda, alttaki widget üstündeki widget in taşıyıcısıdır. Ama hepsini taşıyan anataşıyıcıdır. Anataşıyıcıya İngilizce de Window, root, top-level widget, basic gibi adlar verilir. Türkçe kaynaklar, çoğunlukla, pencere der. Anataşıyıcı Tk() 1 Kaynak kodları yazarken widgetlerin özgün (original) adlarını kullanmak zorundayız. Alışkanlık yaratmak için, konuyu anlatırken de widgetler in orijinal adlarını kullanmayı tercih edeceğiz. Ancak, gerekli olduğunda, Türkçe anlamlarını parantez içinde yazacağız

12 BÖLÜM 2. TK SINIFI kurucu metodu ile yaratılan nesneye verilen ad; yani onun ana bellekteki yerini gösteren pointerdir. Ona, örneklerimizde w, win, window, ana, pencere gibi adlar vereceğiz. Anataşıyıcıyı Tk() kurucusu ile yaratacağımız için, onun hangi adla anıldığı her örnekte apaçık belirli olacaktır. Bazen widgetler üst üste konulabilir. Bir widget in altında olan onun taşıyıcısıdır. Dolayısıyla, tkinter ile hazırlanan bir görsel arayüzde bütün widgetlerin ana taşıyıcısı Tk sınıfından türetilen bir tek nesnedir. Onu taşıyan; yani onun altına konulan başka bir widget yoktur. Vurgulamak için ona anataşıyıcı diyoruz. Ama uygulamada window ya da pencere terimleri alışkanlıklarımıza daha çok uymaktadır. Arayüz hazırlayan kişi anataşıyıcı yerine istediği bir adı kullanabilir. Zaten hazırlanan görsel arayüzü kullanan kişi, anataşıyıcıya ve öteki widgetlere kaynak programda verilen adları bilmeyecektir. 2.2 Nasıl Çalışır? Widgetlein boyutlarını, konuşlanacakları yerleri, renklerini, vb niteliklerini istediğimiz gibi ayarlayabiliriz. Hazırlayacağımız görsel arayüzün anataşıyıcısının boyutlarını, ekranın boyutlarına eş kılabileceğimiz gibi, daha küçük boyutlar da seçebiliriz. O nedenle, uygulamalarımızda Window terimi, monitörün penceresini değil, görsel arayüzümüzün anataşıyıcısını (root, pencere) ifade edecektir. Arayüz kullanırken, örneğin bir düğmeye tıkladığımızda, bilgisayar bir iş yapar. O işi yaptıran kodlar, düğmeye basılınca kendiliğinden çalışmaya başlar. Buna olay yönetimi (event handling) diyoruz. Yaratacağımız görsel arayüzlerde, olay yönetiminin nasıl yapıldığını, ilerleyen bölümlerdeki örneklerimizde ele alacağız. Ama öncelikle, bir pencere yaratıp, onun üzerine widgetleri nasıl yerleştireceğimizi öğrenmeliyiz. 2.3 Anataşıyıcıyı Yaratma Tk, tkinter modülü içinde bir sınıftır (class). Anataşıyıcı Tk sınıfından türetilen bir nesnedir. Öyleyse, Tk sınıfına ait bir nesne yaratmamız gerekecektir. Bu işi yapmak için, Tk sınıfına ait bir nesne yaratan Tk() kurucu metodunu çalıştırmak yetecektir. Tabii, daha önce, Tk sınıfını içeren tkinter modülünü çağırmalıyız. tkinter modülü, arayüz hazırlamak için gerekli olan sınıfları, metotları ve başka öznitelikleri içerir. Genellikle, arayüz yaratırken tkinter modülün-

2.3. ANATAŞIYICIYI YARATMA 13 deki her şeye gerekseme duyar ve dolayısıyla hepsini çağırırız. Çağırma işini 1 >>> i m p o r t t k i n t e r >>> i m p o r t t k i n t e r as T >>> from t k i n t e r i m p o r t deyimlerinden birisiyle yapabiliriz. Sonuncusu tkinter modülüne ait bütün aduzayını çağırır. İlk ikisi bazı sistemlerde çalışmayabilir. Çoğunlukla üçüncüyü tercih edeceğiz. Şimdi Tk sınıfına ait bir nesne yaratmak için, IDLE da şu iki deyimi yazalım: Liste 2.1. >>> from t k i n t e r i m p o r t 2 >>> Tk ( ) Ekrana <t k i n t e r. Tk o b j e c t at 0x02763D70> yazısı ile birlikte Şekil 2.1 de görülen pencere gelecektir. Sondaki hex sayısı, yaratılan Tk nesnesinin bellekteki adresidir; sistemden sisteme değişir. Bu ileti Tk() kurucusunun Tk sınıfına ait bir nesne yarattığını söylüyor ve onun ana bellekteki adresini gösteriyor. Görünen pencereye anataşıyıcı diyeceğiz. Önceden söylediğimiz gibi, ona root, top-level, basic, parent, window, pencere gibi adlar verilir. Tk() metodu, sınıfa ait bir nesne yarattığı için, ona kurucu metot diyeceğiz. Python da sınıftan nesne yaratma eylemine initialize denilir. Nesne tabanlı programlama dillerinde, sınıftan bir nesne yaratılınca, onun ana bellekteki adresini işret eden bir pointer tanımlanır. Liste 2.1 de Tk() kurucusunun yarattığı nesneyi işaret eden bir pointer tanımlanmamıştır. Böyle yapmak iyi değildir. Çünkü, onu gösteren bir değişken (pointer) olmadığı için, programın başka yerlerinde o nesneye ulaşan kodlar yazmak olanaksızdır. O nedenle, yaratılan her nesneye bir ad vermeyi alışkanlık edinmeliyiz. Örneğin, Liste 2.1 in ikinci satırı yerine p = Tk() yazabiliriz. O zaman p pointeri yaratılan Tk nesnesini (pencere) işaret eden pointer olur; yani nesnenin adıdır. Tabii, p yerine istediğimiz başka bir ad kullanabiliriz. Ekranda açılan Şekil 2.1 penceresini inceleyelim. Şekil 2.1, Windows işletim sistemindeki pencerelere benziyor. Dikdörtgenel bir biçemi var. Üst kısımdaki şeritte, soldan sağa doğru şunları görüyoruz:

14 BÖLÜM 2. TK SINIFI Şekil 2.1: Windows Nesnesi Tk logosu, tk etiketi, pencereyi küçültüp en alttaki görev şeridine indiren ikona dönüştürme düğmesi (_), pencereyi büyütüp küçültmeye yarayan dikdörtgen biçimindeki düğme, pencereyi kapatan en sağ üst köşede (X) işaretli düğme. Pencerenin üst şeridinde gördüklerimiz Windows işletim sistemindeki pencerelerde standart olarak var olan öğelerdir. İşletim sistemimiz Linux ya da OS X olsaydı, yaratılan pencere o işletim sistemlerindeki pencerelere benzer olacaktı. Örneğin, burada en sağda beliren üç düğme, Linux ya da OS X işletim sistemlerinde pencerenin sol üst kısmına konuşlanacaktır. Üst şeridin altında dikdörtgenel boş bir alan vardır. Bu alana görsel arayüzde kullanılacak widgetler konuşlandırılır. Bundan sonraki paragraflarda bu işi yapacağız. Buradan çıkaracağımız sonuç şudur: tkinter ile yarattığımız pencereler, kullandığımız işletim sisteminin pencerelerine benzer olur. Pencerede Olay Yönetimi Şimdi yarattığımz pencerede faremizle biraz oyun oynayalım. Yarattığımız pencereyi, üst şeritte bir yere tıklayıp, faremizin sol düğmesini basılı tutarak, monitörde istediğimiz konuma götürebiliriz. Gene, köşelerinden birisine tıklayıp, faremizin sol düğmesini basılı tutarak, pencerenin buyutunu büyültüp küçültebiliriz. Benzer eylemi kenarlardan birisi ile de yapabiliriz. İkonlaştırma düğmesine (_) tıklayınca pencerenin küçülerek görev çubuğuna bir ikon olarak indiğini, büyültme-küçültme düğmesine tıklayınca pencerenin ekranımızın boyutuna eşit boyuta geldiğini ya da tekrar küçüldüğünü, kapatma düğmesine tıklayınca pencerenin kapandığını (yok olduğunu) görebiliriz.

2.3. ANATAŞIYICIYI YARATMA 15 Bütün bu eylemleri yapması için, biz, hiç komut yazmadık. Ama, bu eylemleri yaptıran komutlar (metotlar) Tk sınıfında zaten vardır. O metotlar, kalıtsal olarak Tk() kurucusunun yarattığı nesneye geçmiştir. O metotları yeniden yazmaya gerek kalmadan kullanıyoruz. Gerçekte, burada yaptığımız eylemlerin her biri bir olay yönetimidir (event handling). Ama bu konuyu ele almadan önce widgetleri pencerede konuşlandırmayı öğrenmeliyiz. Liste 2.2. Tk modülünün aduzayındakileri görmek için IDLE arayüzünde >>> from t k i n t e r i m p o r t >>> d i r (Tk) yazınız. Çok uzun bir listenin yazıldığını göreceksiniz. 2.3.1 Pencerenin Yapısı tkinter ya da başka bir GUI alet çantası ile yaratılan bir pencerenin yapısı şöyledir. En üst şerit logo, başlık ve pencerenin eylem düğmelerini içerir. Bu satıra pencerenin başlık şeridi (title bar) diyeceğiz. Başlık şeridi dememizin nedeni açıktır; pencereye istediğimiz adı verebiliriz. Verdiğimiz ad, yukarıdaki tk yerine geçer. tk, pencerenin öntanımlı (default) başlık adıdır. Pencereye başka bir ad verdiğimizde, yeni ad tk nın yerini alır. Ad şeridinin altındaki dikdörtgenel boşluğa, istediğimiz widgetleri konuşlandırabiliriz. Çoğunlukla, ad kuşağının hemen altına menü kuşağı konulur. Menü kuşağının altına başka widgetler konulur. O bölgeye içerik bölmesi (content pane) adı verilir. Bazı durumlarda, pencerenin en alt satırına görev çubuğu denilen şerit konulabilir. İçerik bölmesine widgetleri konuşlandırmak için, konuşlandırma yöneticilerini (Layout Managers) kullanacağız. 2.3.2 Pencereye Başlık Verme title() Metodu Şimdi penceremize ön tanımlı tk başlığı yerine başka bir ad verelim. Pencereye ad vermek için Windows sınıfının title() metodunu kullanacağız. Tabii, bu metodun kalıtsal olarak Windows sınıfından yaratılan nesnelere geçtiğini anımsıyoruz. Liste 2.3.

16 BÖLÜM 2. TK SINIFI from t k i n t e r i m p o r t 3 pencere = Tk ( ) pencere. t i t l e ( i l k Pencere ) pencere. mainloop ( ) Açıklamalar: 1.satır, tkinter modülünün aduzayını (namespace) çağırır. Böylece tkinter modülüne ait her şeyi programda kullanabiliyor oluruz. 3.satırda, Tk sınıfından Tk() kurucusu ile yaratılan nesneye pencere adı verildi. İstenirse başka bir ad da verilebilir. Tabii, verilen ad, yaratılan nesnenin ana bellekteki adresini gösteren bir pointerdir. Yaratılan pencere nesnesi anataşıyıcıdır. 4.satırda, Tk sınıfının title() metodu, yaratılan nesneye ad veriyor. Bu ad öntanımlı tk yerine geçer. Liste 2.3 in üçüncü satırı, pencere adlı nesneye ilk Pencere adını verdi. Bu ad, Şekil 2.1 deki tk yerine geçer ve ad şeridindeki yerini alır. title() metodunda ad olarak yazılan string görünmeyecek kadar uzunsa, hepsini görmek için fare ile pencerenin genişliğini büyütebilirsiniz. title() metodunun Tk sınıfının aduzayında olduğunu görmek için >>> type (Tk. t i t l e ) deyimini yazarsanız < c l a s s f u n c t i o n > yanıtını alırsınız. Son satırdaki pencere.mainloop() deyimi, bir sonsuz döngüdür. Kapatılana kadar pencerenin ekranda görünmesini sağlıyor. Bu döngü yazılmazsa, pencere, monitörde bizim göremeyeceğimiz hızla bir kez çıkar ve yokolur. Pencereyi sürekli görebilmemiz için, onu sonsuz mainloop() metodu ile ekranda tutuyoruz. Pencere kapatıldığında mainloop() döngüsü sona erer. 2.4 Sınıf Kullanma Nesne tabanlı programlamada, her işi sınıflarla yapmayı alışkanlık edinmeliyiz. Onun için, yukarıda yaptıklarımızı sınıflarla terarlayalım. Önce bir sınıf yaratmalıyız. c l a s s B a s i t ( t k i n t e r. Tk) : deyimi Basit adlı bir sınıf bildirimidir. Bu sınıf, tkinter.tk sınıfının altsınıfıdır. Başka bir deyişle, tkinter.tk sınıfı Basit adlı sınıf için üstsınıftır

2 2.4. SINIF KULLANMA 17 (ata, parent). Dolayısıyla, Basit sınıfı, tkinter.tk sınıfının bütün öğelerini kalıtsal (inheritance) olarak alır. Şimdi Basit sınıfının bir kurucusunu (constructor) tanımlayalım: c l a s s B a s i t ( t k i n t e r. Tk) : d e f init ( s e l f, parent ) : t k i n t e r. Tk. init ( s e l f, parent ) Açıklamalar: 2.satırda tanımlanan init (self,parent) metodu, 3.satırda üstsınıfın tkinter.tk(). init () kurucusunu çağırıyor. Başka bir deyişle, Basit sınıfın içindeki init () metodu, üst sınıfın init () metodu imiş gibi tanımlanıyor. GUI de widgetler içiçe yuvalanabilir; yani bir widget başka birisinin taşıyıcısı olabilir. Bir widget başka birisinin üzerine konulmuş ise, alttaki taşıyıcı, üstteki taşınan dır. Taşıyıcı, taşınanın atasıdır (parent). Bu açıdan bakınca, anataşıyıcı dışındaki her widget in bir atası (taşıyıcısı) vardır. O nedenle, bir widget in kurucusunda ata ya da parent parametresi onun taşıyıcısıdır. Bir grup widget in görünür ya da görünmez kılınabilmesi için, onların taşıyıcısını bilmemiz gerekir. Bunu yapmak için self.parent = parent deyimini kullanırız. Bu deyimi de eklersek, programımız, i m p o r t t k i n t e r c l a s s B a s i t ( t k i n t e r. Tk) : d e f init ( s e l f, parent ) : t k i n t e r. Tk. init ( s e l f, parent ) s e l f. parent = parent biçimini alır. Arayüz hazırlarken bütün label, button, text field,... gibi pencere araçlarının hepsini (widgets) elimizin altında tutmak iyidir. Bunun için, programımıza initialize() metodunu ekleyelim. i m p o r t t k i n t e r c l a s s B a s i t ( t k i n t e r. Tk) : 4 d e f init ( s e l f, parent ) : t k i n t e r. Tk. init ( s e l f, parent ) s e l f. parent = parent d e f i n i t i a l i z e ( s e l f ) : 9 pass Son satırdaki pass deyimi, Python da bir iş yapmadan geç anlamında kullanılan bir komuttur. Dolayısıyla, Module 2.1 nin 11.satırında tanımlanan initialize() metodu şimdilik bir iş yapmayacaktır. Son olarak main metodunu ekleyerek programımızı tamamlayalım.

18 BÖLÜM 2. TK SINIFI Module 2.1. 1 #!/ usr / bin / python # coding : utf 8 i m p o r t t k i n t e r 6 c l a s s B a s i t ( t k i n t e r. Tk) : d e f init ( s e l f, parent ) : t k i n t e r. Tk. init ( s e l f, parent ) s e l f. parent = parent 11 d e f i n i t i a l i z e ( s e l f ) : pass i f name == " main " : uygulama = B a s i t ( None ) 16 uygulama. t i t l e ( İ l k Uygulamam ) uygulama. mainloop ( ) Açıklamalar: 1.satır, Unix tabanlı sistemlerde Python un kurulu olduğu dizini bildirir. 2. satır, Unix tabanlı sistemlerde, karakter kodlamasının utf-8 olduğunu bildirir. Windows işletim sisteminde ilk iki satırın işlevi yoktur. 6.satır bir sınıf bildirimidir. 14.satırdaki main metodu, Python programlarını yürütmek için kullandığımız metottur. Kava daki main() metodunun işlevine benzer bir işleve sahiptir. 15.satır Basit sınıfının kurucusunu None parametresi ile çağırıyor. Dolayısıyla parent sınıfı None oluyor. Bilindiği gini Python dilinde None boş sınıf yerine geçer. O nedenle, Basit sınıfı üst sınıftan kalıtsal bir şey alamaz. Bu satırda yaratılan nesneye uygulama adı verildi. İstenirse başka bir ad da verilebilirdi. 16.satır, uygulama adlı nesneye "ilk uygulama" başlığını veriyor. 18.satır mainloop() döngüsü ile, yaratılan nesneyi (pencere), kapatılana kadar ekranda görünür kılıyor. Arayüzün görünmesi için tkinter de bu döngünün gerekli olduğunu daima anımsamalıyız. Başka GUI araç kutularında mainloop() un adı farklı olabilir.