求如何将cmd或python最小化到屏幕右下角

最近用Python写了个小脚本,计划开机运行,然后常驻后台。
希望实现的效果:
1、开机自动运行后,直接最小化到右下角(这个叫啥?任务栏?托盘?应该不叫状态栏吧?)。需要查看时可以双击打开。
2、其他cmd及python运行的窗口不要最小化到右下角。

目前尝试了Smart System Menu等几个工具,出现的问题是:
1、每次打开cmd或python的窗口后,都得重新设置最小化到右下角,用批处理命令指定了窗口title也不行(感觉好像是因为,每次运行,对于系统来说都是一个新的cmd窗口,所以这些软件里面的“一直”之类的设置就不好用了)

求助!!求助!!

我觉得有两类方案:1. 找一个你提到的 Smart System Menu 这类工具,把你的 python 程序包一下;2. 修改你的 python 代码,让其直接最小化到系统托盘。第一类方案我不知道,等其他人给你补充吧,我说说改代码的方案。

你需要最小化到 windows 系统托盘,很明显这不是 python 自身能解决的,你可以用 pywin32 这个包。这是个挺基础的包,我自己没直接用过,一般可以用基于它的其他 UI package,比方说 tk 或者 pyside2,这类高级 ui 包应该都提供 windows 桌面交互的组件。

我在网上搜了下,看到一个 reddit 链接 用的是 PySimpleGUI,看起来小而轻便,你可以尝试。

1 Like

不过也可以试试这种简单的:

Python 凡是涉及到 GUI 的,统一用 PyQt 吧。

凡是可以用 pyqt 的,建议直接用 pyside2 吧,也没有商业授权问题。

不过他这个需求,可能用 pyside2 确实有些重了,我觉得 pySimpleGUI 合适。

补充一下,用批处理执行vbs文件,如果是:
set WshShell = WScript.CreateObject(“WScript.Shell”)
WshShell.SendKeys"^a"
就是好用的,在cmd里面全选了,但是其他比如Win+L锁定计算机,"^{ESC}l"就不行,反应是:
d:\Desktop>“D:\desktop\1.vbs”
d:\Desktop>l

vbs里是
set WshShell = WScript.CreateObject(“WScript.Shell”)
WshShell.SendKeys"^{ESC}l"

就是说,执行vbs后,只留下了个l输入……

那估计还是要靠 PySimpleGUI 这种来实现。

可以看一下CommandTrayHost项目

最近有点儿忙,没怎么逛论坛,也没时间试下这个写个 demo 啥的。。。

不过你提到的 pySimpleGUIQT,本来就属于 pySimpleGUI 下的啊,它是在 pyside2/pyqt5 这类 qt 库的基础上做了精简的封装。

我的理解是,你直接双击运行脚本,就是用 python 运行这个脚本,在 windows 上的表现就是启动了一个 cmd 样式的窗口并在其上运行代码(如果你没有显式的禁止前台运行的话)。所以 PySimpleGUI 这个库应该就是帮你把这个窗口,放到后台运行了。

我跑了一下它的那个 demo 的例子,我大概猜到你的问题是什么了!

tray = sg.SystemTray(menu=menu_def, filename=r'default_icon.ico')

你是不是没有这个 icon 图标?你随便搜一个 icon 图标,重命名和你的代码里名字保持一致,然后注意启动路径/文件路径的问题,应该就可以了。

还真是,感谢!
又继续研究了一个下午,继续搞不定,不好意思,您要是有空时,能帮忙写一下吗?万分感谢!!
感觉需要定义托盘图标(OK),最小化窗口时在系统状态栏隐藏,双击托盘图标时还原窗口,还有一个在当前这个py启动运行的时候触发最小化自身的行为。 搜了半天,真是一个都搞不定…… 555

它代码库里的这个例子应该是你想要的吧?可以最小化到任务栏,也可以最小化到系统托盘,还可以还原。

image

https://github.com/PySimpleGUI/PySimpleGUI/blob/master/PySimpleGUIQt/Demo%20Programs/Qt_Demo_System_Tray_Icon.py

它提供的这套界面有点儿丑,你当一个自用的启动脚本还行,如果你确实是想做一个完整的桌面程序,还是应该直接上 pyside2 这种 high level 的 GUI package。

有款叫minimum的上古软件 在最小化旁边加一个按钮 可以最小化到托盘 可惜按钮还是98的风格

多谢!这个我再继续研究
感谢感谢!

main.py 后缀名改成 pyw ,即 main.pyw,然后双击运行,就可以不带控制台地启动了,仅适用于 Windows。

自己写的程序,怎么都好办。如果只是控制台的话,cmder有快捷键直接呼出窗口,在设置里面设置task bar的选项就可以直接最小化到托盘了。

收到!感谢!

这个看起来有点赞啊

收到!这个库感觉不错,目前初步搜索,估计可以解决问题!!
感谢!!

记得给正确答案标记对勾。

在回复按钮旁边的扩展按钮中,叫做“解决方案”。