我正在使用 python/tkinter 在 XP 上编写 IM 软件。现在我已经完成了所有主要功能,除了当收到新消息时窗口最小化到任务栏时我不知道如何突出显示或更改 Windows XP 上任务栏上的 IM 项目的颜色。我已经搜索过这个,但刚刚得到了 C# 解决方案。我需要有关 python 的帮助。谢谢!
我需要为我正在编写的 tkinter python slack 客户端执行此操作,并找到 http://wiki.tcl.tk/1049 。经过一番猜测,我发现
Tk().deiconify()
Tk().focus_force()
(即在根窗口上)就可以了。 Windows 实际上不会改变焦点并显示窗口,因为不允许应用程序执行此操作(XP 之后的 Windows),但它会闪烁任务栏。它会一直闪烁,直到点击,但这似乎是 Skype/Slack 等的行为。对于许多用途来说,当然足够接近了。
显然这是一个老问题,但我找不到一个简洁的、仅限Python的答案,但仍然需要一个!
我不确定 Tk 是否有好的方法来做到这一点。也许更有知识的人能够为您指明更好的方向。由于 Python 如此依赖于 OO,因此您可能很难编写与 Windows 窗口管理器的绑定。
如果你没有找到其他东西,我确实偶然发现了http://wiki.tcl.tk/4089,它管理任务栏上的Windows图标。也许您可以利用它来模拟您想要的任务栏闪烁?
我认为你必须为此使用 pywin32 模块。这是我让它发挥作用的唯一方法:
import pywin32gui
import tkinter as tk
window = tk.Tk()
... etc ...
# Highlight the window on taskbar:
hwnd_int = int(window.frame(), base=16)
win32gui.FlashWindow(hwnd_int, 0)