股价展示程序生成
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_c641d7bd/windows-taskbar-widget。
技能介绍
要解决的问题
Windows 桌面上常驻看盘,一直缺一个顺手的方案。用 tkinter 写个窗口很简单,但默认窗口带标题栏、居中显示,既占空间又无法像系统组件一样常驻;而系统托盘又放不下足够的行情信息。这个技能要解决的就是:做一个紧凑的无边框置顶窗口,精确停靠在任务栏上方,同时保留一个托盘图标,鼠标移开后桌面依旧干净。
核心能力与关键步骤
- 浮窗构建:tkinter 去掉标题栏(
overrideredirect(True))并置顶(attributes("-topmost", True)),得到一个紧凑的信息条。 - 任务栏上方定位:用
ctypes调用 Windows API 读取任务栏高度,把窗口摆到屏幕右下角、任务栏正上方,而不是凭感觉写死坐标。 - 交互层:支持拖拽移动、右键菜单(含设置入口)、
Toplevel设置弹窗编辑股票代码。 - 系统托盘:
pystray+Pillow动态绘制价格图标,在独立线程运行;数据刷新时同步重绘图标。 - 数据与配置:
requests轮询新浪财经 API 拉取行情,股票代码按6xxxxx/9xxxxx → sh、其余→ sz规则补全前缀;配置存为 exe 同目录的 JSON 文件。 - 打包:
PyInstaller --noconsole输出单个 exe,双击即用。
Toplevel 弹窗是踩坑重灾区,模板里定了几条硬规则:显式 dlg.attributes("-alpha", 1.0) 覆盖继承来的透明度,防止背景透视;用 self._settings_dlg 守卫变量避免弹窗层叠;弹窗不能用 overrideredirect(True),否则 Entry 直接收不到键盘输入;focus_force 必须放在 dlg.after(200, ...) 里延迟调用;菜单打开弹窗要用 root.after(150, callback) 等右键菜单完全关闭。
适用边界与注意点
- 仅适用于 Windows:任务栏高度、置顶停靠都依赖
ctypes调用 Win API。 - 依赖 Python 3.10+ 及
pystray、Pillow、requests、PyInstaller,打包时务必加--noconsole隐藏控制台。 - 行情源为新浪财经,代码前缀规则只覆盖 A 股常见格式;接口变动时需要自行适配。
- 完整可运行模板见
reference_template.py,上述规则在模板中均有对应实现。
使用场景
- 盯盘时想要一个常驻桌面角落的实时行情条,把浮窗停靠在 Windows 任务栏上方,并配合托盘图标保持桌面整洁。
- 接到自己维护的行情接口时,改 HTTP 请求路径和字段解析逻辑,让浮窗展示该接口的实时数据。
- 需要把组件打包成单个 exe 交给不装 Python 的同事使用,同时隐藏控制台窗口。
- 在既有工具里扩展代码支持,按上海、深圳前缀规则补全股票代码后展示对应品种。
适合人员
- 喜欢把桌面整理得干净、希望看盘时浮窗停靠任务栏上方、离开桌面后托盘图标常驻的 Windows 用户。
- 在 Windows 上做桌面小工具的开发者,想直接复用无边框置顶窗口、系统托盘和配置持久化的整套写法。
- 给交易团队写内部工具的人,需要把行情浮窗和数据刷新逻辑打包成 exe 分发给非技术同事。
- 正在 tkinter 上做自定义组件的开发者,想获取设置弹窗、拖拽和配置保存的完整踩坑方案。