Python-Tkinter(Görsel Programlama)Nasıl Kullanılır ?

'Medusa

Katılımcı Üye
18 Ocak 2021
840
370
JAPAN
Tkinter-Python Nasıl Kullanılır Bahsetmeye Çalıştım Umarım Öğretici Olur..

Kod:
[SIZE="3"][COLOR="white"][B]Öğreneceğimiz Konular  : 
>Pencere oluşturma
>Pencere başlığı 
>Pencere Boyutları ve Konumu 
>Pencere Boyutlarını ve Konumunu Öğrenme 
>Pencere Durumu 
>Pencere Özellikleri 
>>Saydam Pencere 
>>Her Zaman Üstte Olan Pencere
>>Tam Ekran Pencere
>Ekran Çözünürlüğünü Bulmak 
>Fare İmlecinin Konumunu Bulmak
>Pencere Çubuğunu Kaldırmak 
>Aynı Programda Birden Çok Pencere 
>>Pencere Elemanları 
>Label(Etiket Eklemek)
>>Merhaba Dünya Yazısı
>>Yazı Rengi 
>>Yazı Arka Plan Rengi 
>>Yazı Alanının Boyutu
>>Yazı İç Boşluğu
>>Yazı Tipi Ayarları 
>>Yazı Genişliği
>>Yazıyı Yaslama
>>Yazının Kendi İçindeki Konumu
>>Label Üzerine Fare İmlecini Değiştirmek 
>>Resim Ekleme
>Button 
>>Butona Basınca Eleman Değiştirmek 
>>Buton Durumu 
>>Yazılım İle Butona Basmak 
>>Buton ile Programı Kapatmak 
[COLOR="Pink"]Not: (>) İle gösterilen başlık (>>) ile gösterilen başlık içeriğidir.[/COLOR]
[/B][/COLOR][/SIZE]
Tkinter

Biliyorsunuz ilk önce kullanacağımız modulu indirmemiz lazım güncel python indiren kişilerde yanında geliyor bazı linux işletim sistemleri sıkıntı çıkarabilir. Vereceğim kod ile düzeltebilirsiniz :
Kod:
[COLOR="Pink"]sudo apt-get install python3-tk [/COLOR]

Pencere oluşturma


Her şeyi tasarlamak için ik pencere oluşturmamız lazım
Kod:
[COLOR="pink"]from tkinter import * 
pencere = Tk ( )[/COLOR]
Tk ( ) şeklinde yazmamın sebebi Tk ( ) dediğimiz Tkinterin hazinesidir.. Pencere açılıp kapanacaktır burda bir yanlışlık yoktur hatta tam istediğimiz gibi olmuştur. Komutu verdik işlevini yaptı Pencere aç dedik Açıp kapattı.. Duyar gibiyim kapanmamasını nasıl sağlayacağız dediğinizi biraz ileride karşınıza gelecek.

Pencere Başlığı

Bunun için title( ) modülünü kullanacağız. Title ingilizce olarak da başlık anlamına gelmekte.
Kod:
[COLOR="pink"]from tkinter import * 

#Değişkeni atadık 
pencere = Tk ( ) 

#Pencere başlığını ayarladık 
pencere.title ("Pencere başlığı") 

#Pencerenin sürekli açık kalmasını sağladık
mainloop ( ) 
[/COLOR]
Pencere Boyutları ve Konumu

Bunun için Tkinterin içindeki geometry metothunu kullanacağız. Penceremizi 500px , boyunu 200px yapalım.
Kod:
[COLOR="pink"]pencere.geometry ("500x100")[/COLOR]
Şimdi de penceremizi soldan 300px , yukarıdan 100px uzaklaştıralım (Pencere boyutunu 200x200 olarak alıyorum)
Kod:
[COLOR="pink"]pencere.geometry ("200x200+300+100")[/COLOR]
Bu fonksiyon iki parametre alıyor. İlk i enini ikincisi boyunu bunları engelleyebilirsiniz. True ve false kalıplarını kullanacağız mesela enini engellemek istiyorum Bunun için resizable ( ) kullanacağım
Kod:
pencere.resizable(False , True)

Pencere Boyutlarını Ve Konumunu Öğrenme
Kod:
[COLOR="pink"]from tkinter import * 

#Tkinter hazinesini değişkene atayalım 
pencere = Tk( ) 

#Pencere başlığı yapalım
pencere.title ("Pencere başlığı")

#Pencere boyutu ve konumu 
pencere.geometry ("200x200+100+100")

print ("Pencere Boyutu Hesaplanıyor...")

en = pencere.winfo_width ( ) 
boy = pencere.winfo_height ( ) 
sol = pencere.winfo_x ( ) 
ust = pencere.winfo_y ( )

print ( "En  : " + str(en) )
print ( "Boy :  " + str(boy) )
print ( "Sol : " + str(sol) )
print ( "Ust : " + str(ust) )

#Pencerenin açık kalmasını sağladık 
mainloop( ) [/COLOR]
Karşımıza çıkıcak değerlerin hiç bir manası yok ama birde pencere.update ( ) yazarsak...
from tkinter import *
Kod:
#Tkinter hazinesini değişkene atayalım 
pencere = Tk( ) 

#Pencere başlığı yapalım
pencere.title ("Pencere başlığı")

#Pencere boyutu ve konumu 
pencere.geometry ("200x200+100+100")

print ("Pencere Boyutu Hesaplanıyor...")

pencere.update( ) 

en = pencere.winfo_width ( ) 
boy = pencere.winfo_height ( ) 
sol = pencere.winfo_x ( ) 
ust = pencere.winfo_y ( )

print ( "En  : " + str(en) )
print ( "Boy :  " + str(boy) )
print ( "Sol : " + str(sol) )
print ( "Ust : " + str(ust) )

#Pencerenin açık kalmasını sağladık 
mainloop ( )
Şimdi istediğimiz değerleri bize gösterecektir..

Pencere Durumu

Bunun için state( ) kullanacağız
Kod:
[COLOR="pink"]#Normal Pencere :
pencere.state("normal")

#Tam Ekran :
pencere.state("zoomed")

#Görev Çubuğunda Gözüken Pencere :
pencere.state("iconic")

#Hiç Gözükmeyen Pencere :
pencere.state("withdrawn")[/COLOR]
Pencere Özellikleri

Özellikler için wm_attributes( ) kullanacağız. İngilizce attributes "özellikler" anlamına gelir.

>> Saydam Pencere
Saydamlaştırmak için -alpha komutunu kullancağız. Değerlerin yazımı "%50 ise 0.5 e tekabul eder , %30 sa 0.3 e tekabul eder.
Kod:
#Saydamlık %50 ayarlıyoruz 
pencere.wm_attributes("-alpha", 0.5)

>> Her Zaman Üstte Olan Pencere
Bu özelliği -topmost özelliği ile yapacağız
Kod:
pencere.wm_attributes("-topmost", 1)

>>Tam Ekran Pencere
Bu özelliği yapmak için -fullscreen komutun kullanacağız.
Kod:
pencere.wm_attributes ("-fullscreen", 1)

Ekran Çözünürlüğünü Bulma
Kod:
from tkinter import * 

#Tkinteri değişkene atadık 
pencere = Tk ( ) 

print("Genişlik : " + str(pencere.winfo_screenwidth( ) )
print("Yükseklik : " + str(pencere.winfo_screenheight( ) )

mainloop ( )  
Çıktısı : 

Genişlik : 2560 
Yükseklik : 1440

Fare İmlecinin Konumunu Bulma
Kod:
[COLOR="Pink"]from tkinter import * 

pencere = Tk ( ) 

print ("Sol : " + str(pencere.winfo_pointerx( ) )
print ("Üst : " + str(pencere.winfo_pointery( ) )

Çıktısı : 
Sol : 542
Üst : 1256 [/COLOR]
Pencere Çubuğunu Kaldırma

Pencerenin üstünde bulunan pencere başlığı kısmını overrideredirect ( ) fonksiyonu ile kaldırabiliriz
Kod:
[COLOR="pink"]from tkinter import * 
pencere = Tk( ) 
pencere.title("Pencere başlığı") 
pencere.geometry("200x200+100+100) 
pencere.overrideredirect(1)[/COLOR]

Aynı Programda Birden Fazla Pencere Oluşturma
Kod:
[COLOR="pink"]from tkinter import * 

pencere = Tk( ) 
pencere.title("Başlık 1") 
pencere.geometry("200x200+100+100")

pencere2 = Tk( ) 
pencere2.title("Başlık 2")
pencere2.geometry("200x200+100+100)

mainloop( ) [/COLOR]
Böyle daha da fazla yapabilir boyutlarını değiştirebilirsiniz.

Pencere Elemanları


>>Label (Etiket Ekleme)

Label kelimesi ingilizce etiket anlamına gelir. Boş pencerede test edelim

>>Merhaba Dünya Yazısı
Kod:
[COLOR="pink"]Penceremize Merhaba Dünya yazalım.
pencere = Tk( ) 
pencere.title("Başlıkk")
pencere.geometry("200x200+100+100")

yazi = Label (text = "HELLO WORLD")
yazi.pack( ) 

mainloop( ) 
Not= Text metin özelliğidir[/COLOR]

Yazı Rengi
Kod:
yazi = Label (
    text = "Hello World",
    fg   = "red"
)
Göründüğü gibi değişecektir.

Yazı Arka Plan Rengi
Kod:
yazı = Label (
    text = "Hello World", 
    fg   = "#cccccc", 
    bg   = "#ae0000" 
)
Yazı Alanının Boyutu

Boyutunu ayarlamak için 2 parametremiz var , width ( genişlik ) ve height (yükseklik)
Kod:
[COLOR="pink"]yazi = Label (
    text   = "Hello World", 
    fg     = "#cccccc" ,
    bg     = "#ae0000", 
     
    width = 10,
    height = 10 
)[/COLOR]
Yazı İç Boşluğu

Bunun için padx (Sağ-Sol Boşluk), pady(Üst-Alt Boşluğu)
Kod:
yazı = Label (
    text   = "Hello World",
    fg     = "#cccccc",
    bg     = "#ae0000,

    padx = 50 , 
    pady = 30
)
Yazı Tipi Ayarları

Bunları Label ( ) özelliği "font" ile ayarlayabiliriz.
Kod:
[COLOR="pink"]yazi = Label (
    text   = "Hello World",
    fg     = "#cccccc",
    bg     = "#ae0000", 
  
    padx = 50,
    pady = 30,
 
    font = ("Open Sans", "30", "bold")[/COLOR]

Yazı Genişliği
Kod:
yazi = Label (
    text   = "Hello World Hello World Hello World Hello World Hello World", 
    fg     = "#cccccc",
    bg     = "#ae0000",
    
    padx = 50 , 
    pady = 30,
 
    wraplength = 100 
)
Yazıyı Yaslama

Sola Yaslama
Kod:
[COLOR="pink"]yazi = Label (
    text   = "Bir zamanlar bir adam vardı, karısı ölmüştü; bir de kocası ölen bir kadın; bu kadının da adamın da bir kızı vardı. Her iki kız tanışıyorlardı, beraber dolaşıyor ve sonrasında da bu kadının evine geliyorlardı",
    fg     = "#cccccc",
    bg     = "#ae0000", 
 
    padx = 50,
    pady = 30, 
 
    wraplength = 180 ,
    justify = "left"
)[/COLOR]
Sağa Yaslama
Kod:
yazi = Label (
    text   = "Bir zamanlar bir adam vardı, karısı ölmüştü; bir de kocası ölen bir kadın; bu kadının da adamın da bir kızı vardı. Her iki kız tanışıyorlardı, beraber dolaşıyor ve sonrasında da bu kadının evine geliyorlardı",
    fg     = "#cccccc",
    bg     = "#ae0000", 
 
    padx = 50,
    pady = 30, 
 
    wraplength = 180 ,
    justify = "right"
)

Ortaya Yaslama
Kod:
yazi = Label (
    text   = "Bir zamanlar bir adam vardı, karısı ölmüştü; bir de kocası ölen bir kadın; bu kadının da adamın da bir kızı vardı. Her iki kız tanışıyorlardı, beraber dolaşıyor ve sonrasında da bu kadının evine geliyorlardı",
    fg     = "#cccccc",
    bg     = "#ae0000", 
 
    padx = 50,
    pady = 30, 
 
    wraplength = 180 ,
    justify = "center"
)
Yazının Kendi İçinde Konumu

Yazının genişliğini ve yüksekliğini çoğalttığımızda yazı standart olarak ortada gözüküyor. Bu yazıyı sağa-sola yukarı-aşağı taşımamız için "anchor" parametresini kullanıyoruz.
Hangi harf neye tekabul eder :

Kod:
n = Yukarı 
s = Aşağı
e = Sağ 
w = Sol 
ne = Yukarı - Sağ 
nw = Yukarı - Sol 
se = Aşağı - Sağ 
sw = Aşağı - Sol 
center = orta
Örnek Olarak Yukarı - Sağ Yapalım
Kod:
from tkinter import *


aaaa

pencere = Tk ( ) 
pencere.title("Pencere Başlığı") 
pencere.geometry("200x200+100+100")

yazi = Label ( 
    text   = "Python",
    fg     = "#cccccc",
    bg     = "#ae0000",
 
    width = 50,
    height = 50,

    anchor = "ne" 
)
yazi.pack( ) 
mainloop( )
Label Üzerinde Gelindiğinde Fare İmleci Değiştirme

Bu işlemi cusor parametresi ile yapacağız .

Kod:
[COLOR="Pink"]İmleç listesi :
x_cursor  , lr_angle , arrow , man , based_arrow_down , middlebutton , based_arrow_up , mouse , boat , pencil , bogosity , prate , plus , bottom_left_corner , buttom_right_corner , question_arrow , bottom_side , right_ptr, bottom_tee , right_side , box_spiral , right_tee , center_ptr ,rightbutton , circle , rtl_logo , clock , sailboat ,coffee_mug , sb_down_arrow , cross , cross_reverse , crosshair , diamond_cross , dot , dotbox, double_arrow , double_arrow , draft_large , draft_small , draped_box , excahnge.
[/COLOR]
Uygulamak için :
Kod:
[COLOR="pink"]yazi = Label ( 
    text   = "Python",
    fg     = "#cccccc", 
    bg     = "#ae0000", 
 
    width = 50,
    height = 50,

    cursor = "cross"
)[/COLOR]

Resim Ekleme
Kod:
[COLOR="pink"]from tkinter import * 
pencere = Tk ( ) 
pencere.title("başlıkk")
pencere.geometry("200x200+100+100")

resim = PhotoImage (file = "gif.gif"

yazi = Label (İmage  = resim)
yazi.pack( ) 

mainloop( )[/COLOR]
Gif dosyasının ek olarak yazılacak cümlenin veya kelimenin yeri değişebilir :
Kod:
top = Üst 
bottom = Alt
left = Sol 
right = Sağ 
center = Orta

Kod:
[COLOR="pink"]from tkinter import * 
pencere = Tk ( ) 
pencere.title("başlıkk")
pencere.geometry("200x200+100+100")

resim = PhotoImage (file = "gif.gif")

yazi = Label(
    image    = resim,
    text     = "Test Yazı",
    compound = "left",
)
yazi.pack( ) 

mainloop( )[/COLOR]
Button

Label özelliklerinin hepsinde geçerlidir. "command" parametresini kullanır. Buton Yapalım :
Kod:
[COLOR="pink"]from tkinter import * 

pencere = Tk( ) 
pencere.title("Pencere 1")
pencere.geometry("200x200+100+100")

def mesaj_yaz( ) : 
    print ("Butona basıldı")

buton = Button (

    text    = "Mesaj", 
    command = mesaj_yaz 
)

buton.pack ( ) 

mainloop( ) [/COLOR]
Butona Basınca Yazı Değiştirmek
Kod:
[COLOR="pink"]from tkinter import * 

pencere = Tk( ) 
pencere.title("Pencere 1")
pencere.geometry("200x200+100+100")

def yazi_degistir( ) : 
    etiket["text"] = "Merhaba Dünya !"

etiket = Label (text = "Hello World !")
etiket.pack( ) 

buton = Button(

    text = "Mesaj", 
    command = yazi_degistir
)

buton.pack( ) 

mainloop( ) 
[/COLOR]
Pasif Buton
Kod:
[COLOR="Pink"]from tkinter import * 

pencere = Tk( ) 
pencere.title("Pencere 1")
pencere.geometry("200x200+100+100")

def yazi_degistir( ) : 
    etiket["text"] = "Merhaba Dünya !"

etiket = Label (text = "Hello World !")
etiket.pack( ) 

buton = Button(

    text    = "Mesaj", 
    command = yazi_degistir,
    state   = "disabled", 
) 
#pasif buton yazı rengi 
disabledforeground = "red" [/COLOR]
Yazılım İle Butona Basma

invoke( ) fonksiyonunu kullanacağız.
Kod:
[COLOR="pink"]from tkinter import * 

pencere = Tk( ) 
pencere.title("Pencere 1")
pencere.geometry("200x200+100+100")

def yazi_degistir( ) : 
    etiket["text"] = "Merhaba Dünya !"

etiket = Label (text = "Hello World !")
etiket.pack( ) 

buton = Button(

    text = "Mesaj", 
    command = yazi_degistir
)

buton.pack( )
buton.invoke( ) 

buton.pack( ) 

mainloop( ) 
[/COLOR]
Buton İle Program Kapatmak
Kod:
from tkinter import * 

pencere = Tk( ) 
pencere.title("Pencere 1")
pencere.geometry("200x200+100+100")

def kapat ( ) : 
    quit( ) 

buton = Button 

    text    = "Kapat", 
    command = kapat, 
)

buton.pack ( ) 

mainloop ( )

Sonuna Geldik Umarım Öğretici Olmuştur Bildiğim Her Şeyi Yansıtmaya Çalıştım
 
Son düzenleme:

CacaBey

Üye
23 Şub 2021
93
1
@@@@@@@@@@@@
Kod Satırlarını Bold Yapmayıp Normal Bıraksaydın Ve Fontunu Da Aynı Bıraksaydın Daha İyi Görünürdü
Bir De Kod Satırlarını Renklendirme Olduğu Gibi Dursun Konu Daha İyi Görünsün
 

нydrαтнαlleѕ

İSTİHBARAT!
8 Ocak 2017
3,210
1,454
Emeğine sağlık Medusa. Konu başında tkinter ile anlattığın başlıkları belirtirsen daha sağlıklı olur.
 

'Medusa

Katılımcı Üye
18 Ocak 2021
840
370
JAPAN
Ellerine Sağlık ^^

Teşekkür ederim..


Elinize Emeğinize Sağlık.

Teşekkür ederi ..


Kod Satırlarını Bold Yapmayıp Normal Bıraksaydın Ve Fontunu Da Aynı Bıraksaydın Daha İyi Görünürdü
Bir De Kod Satırlarını Renklendirme Olduğu Gibi Dursun Konu Daha İyi Görünsün

Fikirleriniz benim için çok önemli ... genel olarak renkli sevdiğimden böyle yapıyorum ama asıl amacım okuyanlara okuduklarından bişi anlamasını sağlamak.. birazda dikkat çeksin :D
 

'Medusa

Katılımcı Üye
18 Ocak 2021
840
370
JAPAN
нydrαтнαlleѕ;9362023' Alıntı:
Emeğine sağlık Medusa. Konu başında tkinter ile anlattığın başlıkları belirtirsen daha sağlıklı olur.

Hocam ilk önce teşekkür ederim , ilk başta içerik dediğim yer bütün başlıkları belirtiyor.

(artık daha belirgin)
 
Son düzenleme:
20 Ağu 2016
51
0
İstanbul
Kardeşim Allah razı olsun senden, bende yeni öğreniyorum bunu, bunları hep merak ediyordum çok saol, umarım bu konunun devamını getirirsin takipçin olacağım.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.