arşiv

yazılar buna göre etiketlendi; ‘pencere’

Tkinter’de Saydam Pencereler Oluşturmak

Pazar, 18 Eki 2009

Tkinter’de “wm_attributes()” adlı bir metot var. Bu metodun help() dosyasında şu bilgi veriliyor:

>>> from Tkinter import *
>>> help(Tk().wm_attributes)
 
On Unix, there are currently no special attribute values

Bu metot, aslında Tkinter’de pencereleri şeffaf yapmamızı sağlayacak bir parametreye sahip. Windows ve MacOs sistemlerinde şöyle bir komut yazarak pencereleri şeffaf hale getirebiliyoruz:

>>> pencere.wm_attributes("-alpha", 0.5)

“-alpha” değeri 0 ile 1 arasında değerler alabiliyor ve bu değer pencerenin şeffaflık düzeyini gösteriyor.

Yukarıdaki komut Windows ve MacOs’ta doğrudan çalışabiliyor. Ancak GNU/Linux sistemlerinde “-alpha” değerinin pencere şeffaflığı üzerinde herhangi bir etkisi bulunmuyor.

Tkinter belgeleri de bu bilgiyi doğruluyor… Hatta http://www.tcl.tk/man/tcl8.4/TkCmd/wm.htm#M6 adresinde “wm attributes” metodunun “-alpha” parametresi için şu bilgi verilmiş:

Specifies the alpha transparency level of the toplevel. It accepts a value from 0.0 (fully transparent) to 1.0 (opaque). Values outside that range will be constrained. This is supported on Windows 2000/XP+. Where not supported, the -alpha value remains at 1.0.

Burada da bu metodun sadece Windows 2000/XP sistemlerinde desteklendiği yazılmış. Ancak bugün bilgisayarı kurcalarken tesadüfen, aslında Tkinter ile şeffaf pencere oluşturmanın GNU/Linux’ta da mümkün olabileceğini farkettim. Eğer sistemde Compiz Fusion çalışıyorsa veya Ubuntu’da “Sistem > Tercihler > Görünüm > Görsel Efektler” içinde “Extra” seçeneği seçili ise şöyle bir kod Tkinter penceresini şeffaflaştırıyor:

#-*-coding:utf-8-*-
from Tkinter import *
 
pencere= Tk()
pencere.geometry("200×200")
 
def saydamlastir():
    pencere.wm_attributes("-alpha",0.5)
 
btn = Button(text="saydamlaştır", command=saydamlastir)
btn.pack(side=BOTTOM)
 
pencere.mainloop()

Tabii yine de her makinede Compiz Fusion’un çalışmayacağını hesaba katarsak, bu yöntemin çok sağlıklı olduğunu söylemek zor…

GNU/Linux , , , , , , ,