web-dev-qa-db-ja.com

Tkinterウィンドウの透明な背景

Python 3.xでTkinterを使用して「読み込み画面」を作成する方法はありますか?私はAdobe Photoshopの読み込み画面のように、透明度などを備えています。すでに使用しているフレーム境界:

root.overrideredirect(1)

しかし、私がこれをすると:

root.image = PhotoImage(file=pyloc+'\startup.gif')
label = Label(image=root.image)
label.pack()

画像は正常に表示されますが、透明度ではなく灰色のウィンドウ背景が表示されます。

ウィンドウに透明度を追加する方法はありますが、それでも画像を正しく表示しますか?

12
forumfresser

Tkinterで背景だけを透明にするクロスプラットフォームの方法はありません。

5
Bryan Oakley

可能ですが、OSに依存します。これはWindowsで機能します。

import Tkinter as tk # Python 2
import tkinter as tk # Python 3
root = tk.Tk()
# The image must be stored to Tk or it will be garbage collected.
root.image = tk.PhotoImage(file='startup.gif')
label = tk.Label(root, image=root.image, bg='white')
root.overrideredirect(True)
root.geometry("+250+250")
root.lift()
root.wm_attributes("-topmost", True)
root.wm_attributes("-disabled", True)
root.wm_attributes("-transparentcolor", "white")
label.pack()
label.mainloop()
25
dln385

これはmacOSの解決策です:

import tkinter as tk

root = tk.Tk()
# Hide the root window drag bar and close button
root.overrideredirect(True)
# Make the root window always on top
root.wm_attributes("-topmost", True)
# Turn off the window shadow
root.wm_attributes("-transparent", True)
# Set the root window background color to a transparent color
root.config(bg='systemTransparent')

root.geometry("+300+300")

# Store the PhotoImage to prevent early garbage collection
root.image = tk.PhotoImage(file="photoshop-icon.gif")
# Display the image on a label
label = tk.Label(root, image=root.image)
# Set the label background color to a transparent color
label.config(bg='systemTransparent')
label.pack()

root.mainloop()

Screenshot

(macOS Sierra 10.12.21でテスト済み)

7
Josselin

簡単です:root.attributes()を使用してください

あなたの場合、それはroot.attributes("-alpha", 0.5)のようなものになります。ここで、0.5は必要な透明度で、0は完全に透明で1は不透明です。

2
vinit_ivar

あなたはこれを行うことができます:window.attributes("-transparentcolor", "somecolor")

1
Jakub Bláha

単一の画像を作成するだけで、次のことができます。

label = Label(root)
label.config(image='image.gif')
label.config(bg='systemTransparent')

これにより、特にmacOSでは、gifとアルファチャネルを輝かせることができます。

0
Ryan Gurnick