18 Kasım 2014 Salı

Separator

Resim 1: Separator
Separator tkinter grafik arayüzün’de bir pencere içerisinde gösterilecek olan birden fazla pencere aracını bir birinden yatay veya dikey olarak ayırmak için kullanılan bir pencere aracıdır. Bu araçta diğer pencere araçları gibi belli parametreler alır. ttk.Separator fonksiyonu iki parametre alır bunlarda birincisi konumlandırılacağı yer pencere, Toplevel, frame vb. eğer konumlandırılacağı yeri belirtmezseniz pencere üzerine konumlanır. İkinci parametre ise "orient"dir. bu parametre iki değer alır bunlardan ilki "HORIZONTAL" ("yatay") ikincisi ise "VERTICAL" ("dikey"). "orient" parametresinin ön tanımlı değeri "HORIZONTAL" dır . Bu yüzden orient isimli parametresi kullanılmazsa ayırıcımız(Separator) yatay olarak oluşacaktır. Tek başına kullanıldığında pencerede neredeyse görünmezdir. Ama frame , label, entry, Checkbutton vb. araçlarla kullanılırsa aracın boyutu kadar yatay veya dikey olarak oluşur.
Ayırıcı ttk.Separator fonksiyonu kullanılarak oluşturulur:

s = ttk.Separator()

Basit bir şekilde aşağıdaki gibi pencere içerisinde kullanılabilir.

#! python3
# -*- coding: utf-8 -*-
from tkinter import *
import tkinter.ttk as ttk
pencere = Tk()
s = ttk.Separator()
s.grid()
pencere.mainloop()

Gördüğünüz gibi bu kodlar hata vermeden çalışmasına rağmen ayırıcımız nerdeyse belli belirsiz bir nokta gibidir. Belki de çoğumuz bu noktayı görememiş olabilir. Daha öncede dediğimiz gibi bu pencere aracı tek başına kullanılmak için oluşturulmamıştır. Aşağıdaki kodlarda yukardaki kodlardan pekte farklı değildir.

#! python3
# -*- coding: utf-8 -*-
from tkinter import *
import tkinter.ttk as ttk
pencere = Tk()
s = ttk.Separator(pencere, orient=HORIZONTAL)
s.grid(row=0, column=0, sticky="news",  pady=5, padx=5)
pencere.mainloop()

Panedwindow

Panedwindow iki veya daha fazla pencere aracını üst üste veya alt alta (veya sol ve sağ) yerleşimini sağlar . Her bölmesine göre yükseklikleri veya genişlikleri ayarlanabilir.

panedwindow ttk.Panedwindow fonksiyonu kullanılarak oluşturulur:

Aşağıdaki kodlar basit bir panedwindow örneğidir.


from tkinter import *
import tkinter.ttk as ttk
pencere = Tk()

p = ttk.Panedwindow(pencere, orient=VERTICAL)

f1 = ttk.Labelframe(p, text="birinci çerçeve", width=100, height=100)
f2 = ttk.Labelframe(p, text="ikinci çerçeve" , width=100, height=100)

p.grid(row=0, column=0, sticky="news",  pady=5, padx=5)
p.add(f1)
p.add(f2)

pencere.title("Labelframe ve Panedwindow kullanımı")
pencere.mainloop()

14 Kasım 2014 Cuma

Labelframe

Windows 7 de Labelframe'nin görünümü

Labelframe tkinter grafik ara yüzünün parçası olan etiketli bir çerçevedir. Bir kompozisyon oluşturan
pencere araçlarını tek bir isim çatısında toplamak için kullanılır. Etiketli çerçevemiz frame gibi ızgara görevi görebilir. Yani istersek üzerine farklı pencere araçları yerleştirebilir ve bu araçların oluşturduğu kompozisyon doğrultusunda
çerçevemize en uygun olan isimi verebiliriz.
Bunun içinde Labelframe'mizin "text" isimli parametresinden faydalanırız. Gördüğünüz gibi etiketli çerçevemiz'de tkinter grafik arayüzümüzün diğer araçları gibi isimli ve isimsiz parametreler alabilir. Bunlar yükseklik, genişlik ve nereye ( pencere, Toplevel, Frame ve panedwindow )
konumlandırılacağı gibi belli parametrelerdir.






Aşağıdaki resimde anlatıldığı gibi tanımlanır. amaç doğrultusunda da içeriğindeki
parametreler kullanılır.

Labelframe fonksiyonu ve parametreleri

Labelframe ttk.Labelframe fonksiyonu kullanılarak oluşturulur:

lab_far = ttk.Labelframe(parametreler, text='Kullanıma özgü metin')

basit bir pencere içerisinde de aşağıdaki gibi kullanılır.

from tkinter import *
import tkinter.ttk as ttk

pencere = Tk()

f1 = ttk.Labelframe(pencere, text="Etiketli çerçeve", width=100, height=100)
f1.grid(row=0, column=0, sticky="news",  pady=5, padx=5)

pencere.title("3x serisinde Labelframe")
pencere.mainloop()


2x serisi içinde de aşağıdaki gibi olabilir. Yalnız 2x serisinde etiketli çerçevemizin (Labelframe'mizin) etiketi 3x serisindeki gibi mavi renkte değil siyah renkte olacaktır.

# -*- coding: cp1254 -*-
from Tkinter import *
import ttk as ttk

pencere = Tk()

f1 = ttk.Labelframe(pencere, text="Etiketli çerçeve", width=100, height=100)
f1.grid(row=0, column=0, sticky="news",  pady=5, padx=5)

pencere.title("2x serisinde Labelframe")
pencere.mainloop()