为什么我需要一个空的 window.attributes() 来使用 tkinter (在 python 中)创建透明窗口?

问题描述 投票:0回答:1

当我在 python 中使用

tkinter
创建透明窗口时,我需要从空的
window.attributes()
调用开始。
否则它不会变得透明。这是错误还是想要的行为?

示例代码:

#!/usr/bin/env python3
import tkinter as tk
window = tk.Tk()
window.attributes() # Unless I use this line the window will not be transparent
window.attributes('-alpha', 0.5)
window.update_idletasks()
window.mainloop()

我注意到的其他事情:

  • 让它在创建窗口和使其透明之间稍等一下没有有帮助。
    通过使用
    time.sleep(1)
    而不是
    window.attributes()
  • window.attributes()
    必须为空。设置另一个属性没有有帮助。
    例如:
    window.attributes("-fullscreen", True)
    而不是
    window.attributes()
  • 令人惊讶的是,当我想更改
    另一个
    属性时,空的window.attributes()不必要
    例如:
    window.attributes("-fullscreen", True)
    will创建一个全屏窗口,无论是否以
    window.attributes()
  • 开头

我的系统:

  • Mint 22(基于 Ubuntu 24.04 的 Linux 发行版)
  • 来自 Ubuntu 软件包的 Python
    python3
    版本
    3.12.3-0ubuntu2
  • 来自 Ubuntu 软件包的 Tkinter
    python3-tk
    版本
    3.12.3-0ubuntu1
  • 来自 Ubuntu 软件包的
  • X 服务器
    xserver-xorg-core
    版本
    2:21.1.12-1ubuntu1
  • Cinnamon 作为 Mint 包的桌面环境
    cinnamon
    版本
    6.2.9+wilma
  • 来自 Ubuntu 软件包的 Tk
    tk
    版本
    8.6.14build1

我也想知道这种行为是否发生在其他系统上......

python tkinter tk-toolkit
1个回答
0
投票

在我的 Raspberry Pi 和 Windows 11 系统上,窗口在没有无参数

window.attributes()
线的情况下变得透明。

这个问题很可能是你的系统问题。如果您的计算机在运行正常任务(例如网络浏览器)时速度缓慢,则可能是导致需要无参数

window.attributes()
调用的原因。

但是,不带参数的调用不会影响性能,因此,如果它适合您,我建议您继续解决该问题。

© www.soinside.com 2019 - 2024. All rights reserved.