Python – Tkinter Kullanımı

Tkinter kullanarak çok pencereli programlar yazabiliriz. Tkinter modülü Pythonla beraber kurulu olarak gelir.

Tkinter Alternatifi Modüller Var mı?

Tkinter modülü PyQt5 , Kivy ve diğer pencereli programlar yazmaya yarayan bir modüldür.Bu da demek oluyor ki Tkinter alternatifi modüllerde var fakat Tkinter daha avantajlıdır.
Tkinter’ın bu modüllere göre avantajı şudur: Diğer modülleri bilgisayarımıza kurmamız gerekirken Tkinter modülü Python içerisinde kurulu olarak gelir ve herhangi bir ek işlem gerektirmez.

Tkinter Modülünü Nasıl Kuracağım ?

Tkinter Python içinde kurulu geldiği için ek bir işleme gerek duymaz.

Python Tkinter Modülü Nedir? Tkinter Kullanımı

Python Tkinter modülü kullanımını başlıklar hâlinde inceleyelim.

Tkinter’ı Nasıl Projeme Dahil Edeceğim?

Tkinter’ı kurmak için ek bir işlem gerekmediği için direkt kod editörümüze gelip
import tkinter 
kodunu yazarsak Tkinter modülümüzü başarıyla içe aktarmış olacağız.
Eğer şu kodu yazarsak Tkinter modülünü kullanmak bizim için daha basit olacaktır.
import tkinter as tk
Bu kod sayesinde şunu yapabiliriz:
Örneğin bir pencere açmak için şu kodu yazarız.
kodakademisi = tkinter.Tk()
fakat “as tk” diyerek içeri aktardığımız yöntem sayesinde bu kodu şöyle de yazabiliriz:
 
kodakademisi = tk.Tk()
bu yöntemde bize kolaylık sağlar.

Pencere Oluşturma

Tkinter modülümüzü dahil ettik pencere oluşturmak için şu kodları yazarız:
kodakademisi = tk.Tk()
eğer bir değişken adı vermezsek penceremiz açılmaz.
Daha sonra bu pencereyi görebilmemiz için “mainloop” metotunu kullanacağız.
 
kodakademisi.mainloop()
şeklinde yazarsak karşımıza şu şekilde bir pencere çıkacak:
Python Tkinter Kullanımı - Pencere Oluşturma

Pencere Büyüklüğünü Ayarlama

Tkinter modülünü kullanarak ilk penceremizi oluşturduk bu pencere ilk açıldığında boyutu bizim belirteceğimiz boyutta olacaktır.
Boyutunu belirtmek için şu kodları yazarız:
kodakademisi.geometry(‘760×480’)
benim önerim pencere boyutunuzun bu değerlerde olmasıdır.

Pencere Adı Değiştirme

Tkinter penceremizi oluşturduk ve boyutunu ayarladık. Şimdiyse penceremize bir ad vermek istiyoruz bunun için ‘title’ yöntemini kullanacağız.
kod.akademisi.title(‘Kod Akademisi’)
Kodunu yazarsak penceremiz şu şekilde olacaktır:
Python Tkinter Kullanımı -  Pencere Başlığı

Gördüğünüz gibi penceremizin sol üst kısmında “Kod Akademisi” yazıyor. Bunu kendinize göre değiştirebilirsiniz.

Ekrana Yazı Yazdırma ve Renkler

Şuana kadar pencere oluşturduk, başlık belirledik ve boyutunu ayarladık.
Şimdi ise oluşturduğumuz pencereye bir yazı yazdıralım ve yazımıza renk verelim.
Şu kodlar sayesinde yazımızı renkli olarak yazdırabiliriz:
yazı = tkinter.Label(text= “Kod Akademisi – Tkinter Modülü Kullanımı Python, fg= “blue”)
yazı.pack()
Şeklinde yazdığımızda ekran çıktımız şu şekilde olur:
Birde “bg” yöntemi ile yazının üstündeki arkaplanın rengini değiştirebiliriz. Örneğin:
yazı = tkinter.Label(text= “Kod Akademisi – Tkinter Modülü Kullanımı Python, fg= “blue”, bg=”red”)
yazı.pack()
Kodunu yazdığımızda çıktımız şu şekilde olacaktır:
Python Tkinter Kullanımı - Pencere Ayarları
Yukardaki kodları kullanarak yazımızın backgroundunu yani arkaplanını kırmızı renge dönüştürdük.

Buton Ekleme (Button)

Tkinterda bir düğme eklemek istiyorsak “Button()” sınıfını kullanırız. Örnek olarak :
buton = tk.Button(text=”Tamam”, command=kodakademisi.destroy)
buton.pack()
bu kodların çıktısı şu şekilde olur:
Kodları açıklamamız gerekirse , öncelikle buton isimli bir değişken tanımladık ve “Button()” sınıfını kullanarak üstünde “Tamam” yazan bir buton oluşturduk. Daha sonra bu butona tıklanınca hangi işlemin yapılacağını belirtmek için “command” metotunu kullandık. Ve “command=kodakademisi.destroy” kodumuz ile birlikte butona tıklanması halinde pencerenin kapatılmasını istedik.
Butonumuzun boyutunu büyüklüğünü vs. ayarlayabiliriz bunun için :
buton = tk.Button(kodakademisi, text=”Tamam”, widht=40, height=10, fg=”red”, command=kodakademisi.destroy)
buton.pack()
Yukarıdaki kodumuzda genişliği 40, yüksekliği 10 olan , “Tamam” yazısı kırmızı renki olan bir çıkış butonu oluşturduk. Ve çıktımız şu şekilde:
Python Tkinter Kullanımı - Butonlar
Gördüğünüz gibi diğer butona göre daha fazla büyük olan bir buton oluşturduk.
Peki butonlarımızın yerlerini nasıl ayarlayacağız?
Bunun için iki yöntem kullanabiliriz. Öncelikle şu kodu yazalım:
b2.place() #Butonumuzun adının b2 olduğunu varsayıyorum.
Şimdi ise yöntemlerimize geçelim. Eğer tam olarak istediğiniz bir koordinat varsa “x” ve “y” cinsinden koordinatları belirterek butonlarımızı o koordinata getiriyoruz. Örnek vermek gerekirse b2 isimli butonumuzu 50,50 koordinatına getirmek için şu kodu yazarız:
b2 = tk.Button(kodakademisi, text=’Kod Akademisi B2 Butonu’, command=kodakademisi.destroy)
b2.place(x=50,y=50)
Yukarıda b2 isimli butonumuzu oluşturduktan sonra alt satıra “b2.place()” yazdık.Ve içinde iki parametre belirttik , ilk parametre x ekseninin koordinatı yani sağ ve sola gitmemize yarıyor.
İkinci parametre ise y ekseninin koordinatı yani aşağı-yukarı gitmemize olanak sağlıyor.
Kodlarımızın çıktısı şu şekilde olur:
Python Tkinter Kullanımı - Yerleştime

Gördüğünüz gibi B2 butonumuz 50,50 koordinatlarında.

Diğer yöntemimiz ise kuzey,güney,doğu,batı vs. diye belirtmek.
Onun için şu kodu yazarız:
b2 = tk.Button(kodakademisi, text=’Kod Akademisi B2 Butonu’, command=kodakademisi.destroy)
b2.place(anchor=NW)
Şeklinde yazdığımızda bize Northwest yani kuzeybatıda olan bir buton oluşturacaktır.
N=Kuzey
S=Güney
W=Batı
E=Doğu
yönlerin baş harfi yukardaki gibidir. ve kodumuzun bize çıktısı şu olacaktır:
Python Tkinter Kullanımı -  Yerleştime
NOT: Tkinter’da place yöntemini kullanırsak pack yöntemini kullanmamamız gerekir.
Tkinter’da butonumuza basılı tutarken renginin değişmesini istiyorsak şu kodu yazarız:
b2 = tk.Button(kodakademisi, text=’Renk Değiş’,
activeforeground=’white’, activebackground=’black’, command=kodakademisi.destroy)
b2.pack()
Kodunu yazdığımızda normalde beyaz renkli olan butonumuz faremizi üstünde basılı tutunca siyah renge dönüşecek.
Örneğin programımızda bazı şartlar var ve kullanıcı kaydolmak için bu şartları onaylamalı eğer onaylamazsa kaydol butonu çalışmayacak. Bunun için şu kodları örnek verebiliriz:
from tkinter import * 

def onay():
    if var.get()==1:
        btn['state']=NORMAL
    elif var.get()==0:
        btn['state']=DISABLED 
    else:
        print('Bir Şeyler Ters Gitti!')

kodakademisi = Tk()
kodakademisi.title("Kod Akademisi")
kodakademisi.geometry("760x480")
kodakademisi['bg']='#5d8a82'

var = IntVar()
cb = Checkbutton(
    kodakademisi, 
    text="Koşulları Kabul Ediyorum", 
    onvalue=1, 
    offvalue=0,
    variable=var,
    font=("time", 16),
    command=onay,
    bg='#5d8a82'
    )
cb.pack(pady=50)

btn = Button(
    kodakademisi, 
    text="Kaydol",
    command=None,
    state=DISABLED, 
    padx=20, 
    pady=10,
    relief=RAISED, 
    font=('times bold', 14)
)
btn.pack()

kodakademisi.mainloop()
Öncelikle kodlarımızın çıktısına bakalım:
Python Tkinter Kullanımı - CheckBox
Koşulları kabul ettikten sonra programımız:
Python Tkinter Kullanımı -  Örnek
Şimdi kodlarımızı inceleyelim:
Öncelikle modülümüzü içeri aktardık. Daha sonra onay adlı bir fonksiyon oluşturduk ve fonksiyonumuzda eğer kutucuğa tıklanmış , değer 1 yani true olmuş ise butonun çalışmasına izin verdik.
Eğer kutucuğa tıklanmamış , değer 0 yani false olmuş ise butonumuzu disable yani kapalı ettik.
Her ikiside olmazsa ekrana “Bir Şeyler Ters Gitti” yazdırdık.
Daha sonra programımızın penceresinin başlığını,boyutunu vs. ayarladık. Daha sonra bir onay kutusu oluşturduk.
Daha sonra bir buton oluşturduk. Ve butonumuzu sadece ilk kod bloğundaki koşullar sağlanırsa kullanabileceğiz.

Kullanıcıdan Veri Alma(Entry)

Tkinter’da kullanıcıdan veri almak için entry yöntemini kullanırız.
Şu şekilde normal bir input kutucuğu oluştururuz.
 
input = Entry()
input.pack()
Yazarsak kullanıcının karşısına bir değer girme kutucuğu gelir.
Bu şekilde kullanıcıdan veri alıp kullanabiliriz.

Frame

Örneğin bir metinimiz ve altında bir butonumuz var fakat buton metnimizle birleşik bunun için frame metotunu kullanırız. Mesela:
yazı = tkinter.Label(text= “Kod Akademisi – Tkinter Modülü Kullanımı Python, fg= “blue”, bg=”red”)
yazı.pack()
buton = tk.Button(kodakademisi, text=”Tamam”, widht=40, height=10, fg=”red”, command=kodakademisi.destroy)
buton.pack()
Yukarıdaki kodumuzun çıktısı şu şekilde olur:
Python Tkinter Kullanımı - Renkler
Eğer kodlarımızın arasına  bir  frame eklersek şu şekilde olur:
yazı = tkinter.Label(text= “Kod Akademisi – Tkinter Modülü Kullanımı Python, fg= “blue”, bg=”red”)
yazı.pack()
cerceve = tk.Frame()
cerceve.pack(pady=15)
buton = tk.Button(kodakademisi, text=”Tamam”, widht=40, height=10, fg=”red”, command=kodakademisi.destroy)
buton.pack()
Bu kodların çıktısı şu şekilde olur:
Python Tkinter Kullanımı -
Gördüğünüz gibi araya frame ekleyince butonumuz ve yazımız arasındaki uzaklığımız y ekseni doğrultusunda arttı.
Framelerimizi x eksenine de koyabiliriz bunun için “pady” yazmak yerine “padx” yazarız.
Frame eklemek hem kullanıcı deneyimi hemde programın görüntüsü bakımından önemlidir.

Onay Kutusu (Checkbox)

Tkinter’da programımızın içinde bazı yerlere onay kutuları eklememiz gerekebilir.
Eğer onay kutusu eklemek istiyorsak öncelikle bir değişken adı yazarız, sonra onay kutusu için kodlarımızı yazarız. Mesela isimsiz bir onay kutusu oluşturrmak için şu kodları yazabiliriz:
onaykutusu = Checkbutton()
onaykutusu.pack()
Bu kodların çıktısı boş bir onay kutusu olacaktır.
Eğer isimli yani yanında metin yazan bir onay kutusu istiyorsak şu kodu kullanabiliriz:
 
onaykutusu = Checkbutton(text=’Onay Kutusu’)
onaykutusu.pack()
şeklinde yazarak onay kutusunun yanında bir metin gözükmesini sağlayabilirsiniz.
Bir programa istediğimiz kadar onay kutusu ekleyebiliriz.
Onay kutumuzun konumunu belirtmek için place yönteminin “relx” ve “rely” metotlarından faydalanırız. Örneğin:
 
onaykutusu = Checkbutton(text=’Onay Kutusu’)
onaykutusu.place(relx=0.0, rely=0.1)
Bu şekilde onay kutumuzun koordinatlarını değişebiliriz.

 İkinci Pencere Açmak(TopLevel)

Programımızda ek olarak farklı bir pencere açmak istiyorsak “toplevel” yöntemini kullanırız.
kodakademisi = Tk()
kodakademisi2 = Toplevel()
Şeklinde yazdığımızda iki pencere açılacaktır. Ama biz bunu daha iyi kullanmak için bir butona tıkladığında yeni pencere açtırabiliriz. Bunun için yeni  pencere açan bir fonksiyon oluşturabiliriz.
Kodlar şu şekilde:
pencere1 = Tk()
def yenipencere():
    pencere2 = Toplevel()
 
buton = Button(text=”Yeni Pencere Oluştur”, command=yenipencere)
buton.pack()
bu kodlar ile önce butonu olan bir pencere oluştururuz, butona tıkladığında “Toplevel” metotuyla yeni bir pencere daha oluştururuz.
Eğer yeni pencerede değişiklikler yapmak istiyorsak fonksiyonun içinden yapabiliriz. Örneğin yeni açılan pencerede de bir buton olsun istiyorsak :
pencere1 = Tk()
def yenipencere():
    pencere2 = Toplevel()
    buton2 = Button(pencere2, text=’Pencereyi Kapat’, command=pencere2.destroy)
    buton2.pack()
buton = Button(text=”Yeni Pencere Oluştur”, command=yenipencere)
buton.pack()
 Eğer buton2’den sonraki parantezin içine pencere2 diye belirtmezsek butonu pencere1 ‘ de oluşturur.

Liste Oluşturmak (Listbox)

Listbox bize bir kutu ve kutunun içinde bir liste oluşturmamız için gereklidir.
Kullanımı diğer tüm metotlarla aynıdır:
listemiz = Listbox()
listemiz.pack()
şeklinde yazdığımızda içinde liste olan kutumuz hazır.
Listbox’ımıza seçenek eklemek istiyorsak şunu kullanabiliriz:
listemiz = Listbox()
listemiz.insert(END, “Kod Akademisi”)
listemiz.pack()
Kodumuzun çıktısı tek elemanlı bir listbox olacaktır.
Eğer birden çok liste elemanımız var ise döngü kullanarak yapabiliriz:
listemiz = Listbox()
listemiz.pack()
 
egitimdilleri = [“Python”, “JS”, “HTML”, “Ruby”, “CSS”, “C”, “C#”, “C++”]
 
for i in egitimdilleri:
    listemiz.insert(END, i)
Yukardaki kodumuzun  çıktısı şu şekilde olacaktır:
Python Tkinter Kullanımı - Listbox

Menü Oluşturmak (menu)

Tkinter’da tıpkı diğer programlardaki menü oluşturabiliriz. Örneğin eğer bir dosyamız olsun ve dosya için 4 farklı işlem yapabilelim. Şu kodları yazarak bir menü oluşturabiliriz:
pencere = Tk() #öncelikle pencere oluşturalım
 
menu = Menu(pencere)
pencere.config(menu=menu) #menümüzü oluşturduk
 
dosya = Menu(menu)
menu.add_cascade(label=”Dosya”, menu=dosya)
dosya.add_command(label=”Aç”) #İşlevler ekliyoruz
dosya.add_command(label=”İçe Aktar”)
dosya.add_command(label=”Farklı Kaydet”)
dosya.add_command(label=”Kapat”, command=pencere.quit)
 
mainloop()
Kodumuzun çıktısı şu şekilde olacaktır:
Python Tkinter Kullanımı -  Menu

Kaydırma Çubuğu (Scrollbar)

Eğer penceremize sığmayacak kadar çok içerik varsa kaydırma çubuğunu kullanırız. Örneğin aşağı yukarı gitmemize sağlayan bir scrollbar eklemek istersek şu kodları yazarız:
 
scrollbar = Scrollbar(pencere)
scrollbar.pack(side=RIGHT, fill=Y)
 
metinimiz = Text(yscrollcommand=scrollbar.set)
metinimiz.pack()
 
scrollbar.config(command=metinimiz.yview)
kodları ile Y ekseninde bir scrollbar ekledik. Fakat scrollbar aktif değil çünkü uzun bir metnimiz yok.

Tkinter Giriş Ekranı (Login Ekranı)

Buraya kadar öğrendiklerimiz ile bir giriş ekranı oluşturabiliriz.
Öncelikle Tkinter modülümüzü import edelim.
from tkinter import *
Daha sonra “Giriş” isimli bir fonksiyon oluşturalım ve işlemerimizi bu fonksiyon üzerinden gerçekleştirelim.
def Giriş():
“Giriş” isimli fonksiyonumuzu oluşturduk şimdi fonksiyonumuza işlevler ekliyelim.
Öncelikle giriş_ekran isimli bir giriş penceresi oluşturalım.
giriş_ekran = Tk()
Penceremizin ayarlamalarını yapalım.
giriş_ekran.geometry(“760×480”)
Ekran boyutunu 760×480 olarak ayarladık.
 
giriş_ekran.title(“Giriş Yap”)
Pencere başlığımızı “Giriş Yap” olarak belirledik.
 
Label(giriş_ekran, text=”Giriş yapmak için bilgilerinizi giriniz.”).pack()
Label metotu kullanarak text içindeki metini yazdırdık.
 
Label(giriş_ekran, text=” “).pack
Frame niyetine bir satır boşluk ekledik.
Label(giriş_ekran, text=”Kullanıcı Adı”).pack()
Text içindeki metni yazdırdık.
 
username_login_entry = Entry(giriş_ekran, textvariable=”username”)
username_login_entry.pack()
Entry metotu kullanarak kullanıcıdan username yani kullanıcı adını istedik.
Label(giriş_ekran, text=” “).pack
Frame niyetine bir label daha ekledik.
Label(giriş_ekran, text=” Şifre”).pack
Ekrana şifre yazdırdık.
password_login_entry = Entry(giriş_ekran, textvariable=”password”, show=”*”)
password_login_entry.pack()
Kullanıcıdan şifresini istedik ve son parametre ile yazdığı şşifrenin ” * ” simgesi olarak gözükmesini istedik.
Label(giriş_ekran, text=” “).pack
Yine bir frame ekledik.
Button(giriş_ekran, text=”Giriş Yap”, width=10, height=1).pack()
Giriş Yap butonu oluşturduk.
giriş_ekran.mainloop()
Penceremizi çalıştırdık.
Daha sonra fonksiyonumuzu çağırıyoruz. Program çıktısını tüm kodlardan sonra bulabilirsiniz.
Giriş()

Tüm Kodlar:

from tkinter import *
 
def Giriş():
    giriş_ekran = Tk()
    giriş_ekran.geometry(“760×480”)
    giriş_ekran.title(“Giriş Yap”)
    
    Label(giriş_ekran, text=”Giriş yapmak için bilgilerinizi giriniz.”).pack()
    Label(giriş_ekran, text=” “).pack
    Label(giriş_ekran, text=”Kullanıcı Adı”).pack()
    username_login_entry = Entry(giriş_ekran, textvariable=”username”)
    username_login_entry.pack()
    
    Label(giriş_ekran, text=” “).pack
    
    Label(giriş_ekran, text=” Şifre”).pack
    password_login_entry = Entry(giriş_ekran, textvariable=”password”, show=”*”)
    password_login_entry.pack()
    Label(giriş_ekran, text=” “).pack
    Button(giriş_ekran, text=”Giriş Yap”, width=10, height=1).pack()
    giriş_ekran.mainloop()
Giriş()
Kodumuzun çıktısı şu şekilde:
Python Tkinter Kullanımı - Örnek Bir Program
Tkinter modülünün temellerini öğrendik daha sonraki derslerimizde Tkinter ile oluşturduğumuz programları inceleyeceğiz. Anlamadığınız yer varsa yorum bırakmaktan çekinmeyin , iyi günler 🙂
Etiketler: python tkinter modülü kullanımı, tkinter kullanımı , tkinter ile login sayfası, tkinter nedir?, tkinter modülü kullanımı, tkinter butonlar, tkinter entry

Yorum yapın