tkinter로 배경이 투과하는 Frame 만들기 【Python】

4661 단어 Tkinter파이썬
tkinter로 배경이 투명한 Frame을 만든다.

환경



Windows10
Python3.7

※본 기사에서는 Win 환경만 취급합니다. 다른 OS에서는 정상적으로 움직이지 않을 가능성이 높다.

샘플 코드


from tkinter import ttk
import tkinter

root=tkinter.Tk()
root.wm_attributes("-transparentcolor", "snow")
#root.attributes("-alpha",0.5)
ttk.Style().configure("TP.TFrame", background="snow")
f=ttk.Frame(master=root,style="TP.TFrame",width="400",height="300")
f.pack()

label=ttk.Label(master=root,text="薄くならないで…",foreground="red",background="snow")
label.place(x=150,y=150)
root.mainloop()


root.wm_attributestransparentcolor 에 투과시키고 싶은 색을 지정한다. 이번은 snow 로 설정.
이로 인해 backgroundsnow flabel 의 배경이 투명해진다.

실행 결과




Frame과 Label의 배경이 투명하고 뒤의 배경 화면이 보입니다. 약간 Label에 snow가 보이지만 이것은 어쩔 수 없습니다 (기분 나쁘다)

-alpha 옵션



위 코드 root.wm_attributes("-transparentcolor", "snow")root.attributes("-alpha",0.5) 와 같이 하면 확실히 -alpha의 값으로 투명도를 [0,1]로 변경할 수 있습니다.
그러나

이렇게 root에 있는 Label 등 오브젝트 전체에 투과율이 적용되므로 주의가 필요.

참고



【Python】【TkInter】투명한 Frame을 생성한다
↑Mac 환경하에서는 이 기사의 내용으로 재현할 수 있다고 합니다(수중에 환경이 없기 때문에 미확인).

리눅스에서도 재현할 수 없는지 조사는 했지만 결국 해결할 수 없어...
위의 샘플 코드를 그대로 ubuntu18.04.4 환경에서 실행하면,
Traceback (most recent call last):
  File "hoge.py", line 5, in <module>
    root.wm_attributes("-transparentcolor", "snow")
  File "/usr/lib/python3.6/tkinter/__init__.py", line 1788, in wm_attributes
    return self.tk.call(args)
_tkinter.TclError: bad attribute "-transparentcolor": must be -alpha, -topmost, -zoomed, -fullscreen, or -type

되었다.

좋은 웹페이지 즐겨찾기