You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Tkinter仅在桌面显示文本(不覆盖其他窗口)

解决方案

要让文本只显示在桌面(不覆盖其他窗口),你需要调整窗口的层级关系,把它绑定到桌面窗口上,而非让它一直置顶。以下是针对Windows系统的修改后代码:

import tkinter as tk
import ctypes

# 获取桌面窗口的句柄
user32 = ctypes.windll.user32
hwnd_desktop = user32.GetDesktopWindow()

# 创建窗口
root = tk.Tk()
label = tk.Label(root, text='Text on the screen', font=('Times','50'), fg='black', bg='white')

# 去掉窗口边框
root.overrideredirect(True)
# 设置窗口位置
root.geometry("+550+250")
# 移除置顶属性(原代码的-topmost会让窗口覆盖所有内容)
root.wm_attributes("-transparentcolor", "white")

# 将我们的窗口设置为桌面窗口的子窗口,使其仅显示在桌面层
user32.SetParent(root.winfo_id(), hwnd_desktop)

# 可选:让窗口位于桌面图标下方(需要图标在文本上方时保留)
user32.SetWindowPos(root.winfo_id(), user32.GetWindowLongPtr(hwnd_desktop, -16) & 0xffff, 0, 0, 0, 0, 0x0001 | 0x0002)

label.pack()
root.mainloop()

关键修改说明:

  • 删掉了-topmost属性,避免窗口强制置顶。
  • 通过ctypes调用Windows系统API,把我们的窗口绑定为桌面窗口的子窗口,这样它就只会停留在桌面背景层,其他应用窗口打开后会自动覆盖它。
  • 最后的SetWindowPos调用可按需保留,作用是让文本显示在桌面图标下方。

注:该方案仅适用于Windows系统,若为macOS或Linux,需使用对应系统的窗口管理API实现类似效果。

内容的提问来源于stack exchange,提问作者Rithvik Ravikumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:42:07