gudao
(古道视野)
1
最近用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,看起来小而轻便,你可以尝试。
Python 凡是涉及到 GUI 的,统一用 PyQt 吧。
凡是可以用 pyqt 的,建议直接用 pyside2 吧,也没有商业授权问题。
不过他这个需求,可能用 pyside2 确实有些重了,我觉得 pySimpleGUI 合适。
gudao
(古道视野)
15
补充一下,用批处理执行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输入……
Qingwa
(青小蛙)
16
那估计还是要靠 PySimpleGUI 这种来实现。
最近有点儿忙,没怎么逛论坛,也没时间试下这个写个 demo 啥的。。。
不过你提到的 pySimpleGUIQT,本来就属于 pySimpleGUI 下的啊,它是在 pyside2/pyqt5 这类 qt 库的基础上做了精简的封装。
我的理解是,你直接双击运行脚本,就是用 python 运行这个脚本,在 windows 上的表现就是启动了一个 cmd 样式的窗口并在其上运行代码(如果你没有显式的禁止前台运行的话)。所以 PySimpleGUI 这个库应该就是帮你把这个窗口,放到后台运行了。
我跑了一下它的那个 demo 的例子,我大概猜到你的问题是什么了!
tray = sg.SystemTray(menu=menu_def, filename=r'default_icon.ico')
你是不是没有这个 icon 图标?你随便搜一个 icon 图标,重命名和你的代码里名字保持一致,然后注意启动路径/文件路径的问题,应该就可以了。
gudao
(古道视野)
21
还真是,感谢!
又继续研究了一个下午,继续搞不定,不好意思,您要是有空时,能帮忙写一下吗?万分感谢!!
感觉需要定义托盘图标(OK),最小化窗口时在系统状态栏隐藏,双击托盘图标时还原窗口,还有一个在当前这个py启动运行的时候触发最小化自身的行为。 搜了半天,真是一个都搞不定…… 555
它代码库里的这个例子应该是你想要的吧?可以最小化到任务栏,也可以最小化到系统托盘,还可以还原。

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。
rodger
(Rodger Yuan)
26
自己写的程序,怎么都好办。如果只是控制台的话,cmder有快捷键直接呼出窗口,在设置里面设置task bar的选项就可以直接最小化到托盘了。
kasusa
(Kasusa)
27
楼主有答案了么
我也遇到了类似的问题,
有一个开机自启脚本,命令行输出内容要看
但是又要他平时保持安静
@kasusa
你可以试试我的这个小工具,把你的脚本配置到这个工具里,然后把这个工具加入开机自启
iamxcd
(iamxcd)
29
python使用 pystray 库就能实现程序常驻托盘
[Python使用pystray库实现托盘图标 – Tkinter布局助手 (pytk.net)]
(Python使用pystray库实现托盘图标 – Tkinter布局助手)
这种效果
gudao
(古道视野)
30
之前一直没啥太好的办法,然后,就看到了网上一段话,如果只是到任务栏,不是最小化到右下角的话
找到启动文件夹,把要开机运行的软件做个快捷方式丢进去(不能直接把脚本丢进去,必须是快捷方式),然后右键快捷方式-属性-快捷方式页面里有个“运行方式”选“最小化”就行了……
居然是win系统自带功能就行……
另外,理论上,再搭配个“最小化到系统托盘”的软件,设置成该脚本最小化时进入系统托盘,似乎就可以实现这样的效果吧。不过我暂时用不到这个功能了,所以就没尝试,有啥结果也反馈一下啊 