2013-08-23 68 views
7

Tôi đang cố gắng, cuối cùng, để tạo ra "cửa sổ hình kỳ quặc" với Python sử dụng mô-đun Tkinter. Nhưng bây giờ tôi sẽ giải quyết cho việc có thể làm cho nền trong suốt trong khi giữ các widget con hoàn toàn có thể nhìn thấy.Có cách nào để tạo cửa sổ trong suốt với Tkinter không?

Tôi biết điều này được thực hiện với wxPython và một số mô-đun khác, nhưng tôi đang tìm hiểu các giới hạn của Tkinter.

Tkinter có thể tạo Canvas hoặc Khung rõ ràng không? Nó có thể đóng gói các phần tử giao diện người dùng mà không có khung hoặc khung không? Các yếu tố giao diện người dùng riêng lẻ có minh bạch không?

Nó có thể chuyển các vị trí nhấp chuột trở lại hệ thống để xử lý bất kỳ cửa sổ nào bên dưới nó trong ngăn xếp Z không?

Trả lời

11

Tùy chọn root.attributes('-alpha', 0.1) thể được sử dụng để thực hiện một cửa sổ trong suốt

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

Tuy nhiên trong trường hợp này ngay cả những vật dụng vào thư mục gốc sẽ thừa hưởng tính minh bạch.

Cập nhật dành cho Linux (Thử nghiệm trên Ubuntu)

Đoạn mã trên không hoạt động trên máy Linux. Đây là bản cập nhật hoạt động trên Linux.

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() 

Không chắc chắn nếu điều này hoạt động trên Windows.

+2

Điều này không hoạt động trên linux w/python3-tk 3.4.3 –

+0

Thú vị. Mặc dù ví dụ của bạn hoạt động, nó dường như không tương thích với 'root.overrideredirect (True)'; nếu tôi thêm điều đó trước cuộc gọi 'wait_visibility', nó sẽ làm cho cửa sổ nhấp nháy (nó xuất hiện hoàn toàn mờ đục, và ngay lập tức trở nên trong suốt). –

+1

Hiện tượng 'cửa sổ chớp mắt' xảy ra cho tôi bất kể lệnh gọi "overrideredirect'. Tôi đoán đó là kết quả của 'wait_visibility' mà chờ đợi cho đến khi cửa sổ trở nên hoàn toàn có thể nhìn thấy tiếp theo cho phép thêm thuộc tính' alpha' do đó gây ra nhấp nháy. – oat

Các vấn đề liên quan