求如何将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 个赞

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

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

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

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

1 个赞

补充一下,用批处理执行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项目

1 个赞

最近有点儿忙,没怎么逛论坛,也没时间试下这个写个 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

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

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

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

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

1 个赞

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

楼主有答案了么
我也遇到了类似的问题,
有一个开机自启脚本,命令行输出内容要看
但是又要他平时保持安静

@kasusa

你可以试试我的这个小工具,把你的脚本配置到这个工具里,然后把这个工具加入开机自启

1 个赞

python使用 pystray 库就能实现程序常驻托盘
[Python使用pystray库实现托盘图标 – Tkinter布局助手 (pytk.net)]
(Python使用pystray库实现托盘图标 – Tkinter布局助手)

这种效果

之前一直没啥太好的办法,然后,就看到了网上一段话,如果只是到任务栏,不是最小化到右下角的话
找到启动文件夹,把要开机运行的软件做个快捷方式丢进去(不能直接把脚本丢进去,必须是快捷方式),然后右键快捷方式-属性-快捷方式页面里有个“运行方式”选“最小化”就行了……
居然是win系统自带功能就行……

另外,理论上,再搭配个“最小化到系统托盘”的软件,设置成该脚本最小化时进入系统托盘,似乎就可以实现这样的效果吧。不过我暂时用不到这个功能了,所以就没尝试,有啥结果也反馈一下啊 :slight_smile: