Daha önceki yazılarımda (Bkz. Python Programlama Dili, İkinci Temel Ödev ve Python ile Çözümü) Python ile siyah ekran (konsol, terminal) üzerinde çalışan basit programlar yapmış ve bunların nasıl işlediğini görmüştük. Bu programlar hem geliştirici hem de kullanıcı için hiç çekici değillerdi 🙂 Şimdi bunları nasıl arayüzlü hale getirebileceğimize kısa bir giriş yapalım. Bu sayede hem Python bilgimizi biraz daha ilerletir, hem Python’un resmi arayüz kütüphanesi olan Tkinter‘ı tanır, hem de mesleğimizle alakalı olan örnek problemimizin (İkinci Temel Ödev) Python ile nasıl arayüzlü olarak programlandığını görürüz.
Jeodezik Hesap adında bir programımız olsun ve bu program bizden formlar yardımıyla Y1, X1, Y2, X2 koordinatlarını alsın. Daha sonra bunlarla ilgili hesapları yapıp (bir fonksiyon yardımıyla) bize bir düğmeye (button) tıkladığımız zaman sonuçları göstersin. Lafı uzatmadan kaynak kodlarına gelecek olursak:
from tkinter import * import math pencere=Tk() pencere.title("Jeodezik Hesap") pencere.geometry("300x375") pencere.resizable(FALSE, FALSE) giris_yazi="Jedeozik Hesap n (İkinci Temel Ödev Hesabı)" giris=Label(text=giris_yazi, font="Verdana 10 bold", fg="red") giris.pack(padx=5, pady=5) def Hesap(): y1=float(girdi_y1.get()) x1=float(girdi_x1.get()) y2=float(girdi_y2.get()) x2=float(girdi_x2.get()) dy=y2-y1 dx=x2-x1 aci=((200/math.pi)*(math.atan(dy/dx))) # Bolge Analizi if dy>0 and dx>0: aci=aci elif dy>0 and dx<0: aci=aci+200 elif dy<0 and dx<0: aci=aci+200 elif dy<0 and dx>0: aci=aci+400 elif dx==0 and dy>0: aci=100 elif dx==0 and dy<0: aci=300 elif dx>=0 and dy==0: aci=0 elif dx<0 and dy==0: aci=200 else: aci=0 cikti_semtacisi["text"]="Semt Açısı = " + str(aci) + " gon" mesafe=math.sqrt((pow(dy,2)+pow(dx,2))) cikti_mesafe["text"]="Mesafe = " + str(mesafe) + " m" etiket_y1=Label(text="Y1", font="Verdana 9 bold") etiket_y1.pack() girdi_y1=Entry() girdi_y1.pack(padx=5, pady=5) etiket_x1=Label(text="X1", font="Verdana 9 bold") etiket_x1.pack() girdi_x1=Entry() girdi_x1.pack(padx=5, pady=5) etiket_y2=Label(text="Y2", font="Verdana 9 bold") etiket_y2.pack() girdi_y2=Entry() girdi_y2.pack(padx=5, pady=5) etiket_x2=Label(text="X2", font="Verdana 9 bold") etiket_x2.pack() girdi_x2=Entry() girdi_x2.pack(padx=5, pady=5) Hesapla=Button(text="Semt Açısı - Mesafe Hesapla", command=Hesap) Hesapla.pack(padx=10, pady=10) cikti_semtacisi=Label(font="Verdana 9 bold", fg="blue") cikti_semtacisi.pack() cikti_mesafe=Label(font="Verdana 9 bold", fg="blue") cikti_mesafe.pack() son_yazi="Ertan Taner Tunç - 17.02.2013" son=Label(text=son_yazi, font="Verdana 8", fg="grey") son.pack(padx=10, pady=10) mainloop()
Eğer daha önceki yazılarımı okuyup kodları incelediyseniz nelerin yeni olduğunu hemen fark etmişsinizdir zaten. Eğer kodları anlamakta sıkıntı yaşıyorsanız önce Python 3 için http://www.istihza.com/beta/py3/icindekiler_python.html ve daha sonra da Tkinter 3 için http://www.istihza.com/beta/tk3/icindekiler_tkinter.html adreslerini ziyaret etmenizi öneririm. Ben burada Python programlama dersi vermekten ziyade kodlama mantığıyla ilgili örnekler (mesleki – meslek dışı) veriyorum.
Gördüğünüz üzere önce penceremizin parametreleri girilmiş daha sonra etiketler (label) ve formlar oluşturulmuş. Arada da Hesap fonksiyonu tanımlanmış. En sonda da bir düğme (button) yardımıyla bu fonksiyonun çalışabilmesi için komut verilmiştir. Kafanızda bir şeyler oluştuğunu umuyorum. Artık daha kullanıcı dostu programlar yazabilirsiniz 🙂
Programın .pyw dosyasını indirmek için burayı tıklayınız.