HzHappy 发表于 2021-8-25 20:18

【Python】【CLI】应用程序的退出

最近根据需求写了一个需要依赖配置文件的CLI(命令行界面)应用程序,然后应用程序需要从外部传递参数才能运作……需求方觉得这个操作实在是太麻烦了,于是我又利用wxPython写了一个GUI的启动器来定向启动CLI程序。具体的实践过程中出现了一些问题。。。


1、在启动器启动CLI应用程序的过程中,使用了os模块的system命令,然后system命令可能是占用了GUI的窗体函数处理线程,结果就是CLI运行起来后GUI假死了。这个问题带来了一些用户感受的下降。
2、CLI应用程序在设计时假设不带任何参数时,就寻找并启动同目录下的GUI启动器,用的也是system命令,然后在启动器启动前会弹出一个cmd窗口(经确认确实是CLI应用程序启动了一个cmd.exe)。CLI启动GUI启动器之后就没用了,我想把它关掉,但是发现exit函数最多关闭CLI应用程序的本体,开出来的cmd窗口还是必须手动关掉。


有什么好办法可以解决这个问题吗?我试过把两个程序用Pyinstaller合在一起,结果要么弹不出cmd窗口报错,要么就是会弹出两个命令行。

细水流长 发表于 2021-8-25 20:26

HzHappy 发表于 2021-8-25 20:29

细水流长 发表于 2021-8-25 20:26
1.界面一个线程,命令一个线程
2.没看懂,直接调用你编写的程序不就行了?为啥启动cmd?

1、一开始开发的原型就是CLI应用,GUI界面是后面开发实现的,只是辅助而已。
2、可能是内部实现吧,os.system启动了一个cmd.exe来执行GUI程序,这个是我用PCHunter查看进程树发现的(因为父进程都被杀掉了结果这个cmd还在)

TES286 发表于 2021-8-25 22:24

Windows平台可以使用start实现非阻塞,其他平台貌似不行

大部分cli都会使用cmd当载体(默认),可以结合pythonw.exe使用,可以看看资料
页: [1]
查看完整版本: 【Python】【CLI】应用程序的退出