2013-08-23 18 views
7

Próbuję, w końcu, stworzyć "dziwnie ukształtowane okna" z Pythonem za pomocą modułu Tkinter. Ale na razie zadowolę się, aby tło było przezroczyste, a widżety dziecka były w pełni widoczne.Czy istnieje sposób na tworzenie przezroczystych okien za pomocą Tkintera?

Mam świadomość, że odbywa się to za pomocą wxPython i kilku innych modułów, ale pytam o ograniczenia Tkintera.

Czy Tkinter tworzy przezroczyste płótno lub ramkę? Czy może spakować elementy interfejsu użytkownika bez płótna lub ramki? Czy poszczególne elementy interfejsu użytkownika mogą być przezroczyste?

Czy może przekazać lokalizacje myszy do systemu w celu przetworzenia wszystkich okien poniżej w stosie Z?

Odpowiedz

11

Opcja root.attributes('-alpha', 0.1) mogą zostać wykorzystane do przezroczystym okienkiem

from Tkinter import * 
root = Tk() 
root.attributes('-alpha', 0.3) 
root.mainloop() 

Jednak w tym przypadku nawet widgety na korzeniu posiądą przejrzystość.

Aktualizacja dla systemu Linux (testowane na Ubuntu)

Powyższy kod nie działa na komputerach z systemem Linux. Oto aktualizacja działająca pod Linuksem.

from tkinter import Tk # or(from Tkinter import Tk) on Python 2.x 
root = Tk() 
root.wait_visibility(root) 
root.wm_attributes('-alpha',0.3) 
root.mainloop() 

Nie jestem pewien, czy to działa w systemie Windows.

+2

To nie działa na Linuksie w/python3-tk 3.4.3 –

+0

Interesujące. Chociaż twój przykład działa, wydaje się być niezgodny z 'root.overridered (True)'; jeśli dodam, że przed wywołaniem 'wait_visibility', powoduje to, że okno miga (wydaje się być całkowicie nieprzezroczyste i natychmiast staje się przezroczyste). –

+1

Zjawisko "mrugnięcia okna" dzieje się dla mnie niezależnie od wywołania 'overrideredirect '. Myślę, że jest to wynik 'wait_visibility', która czeka aż okno stanie się w pełni widoczne, aby następnie dodać atrybut' alpha', powodując migotanie. – oat