python学习笔记之pyinstaller、tkinter、subprocess与win32api
首先用pyinstaller打包应用程序还是很爽的。但是随着使用深入,遇到一些问题。
tkinter设置窗口图标后产生的问题
root.iconbitmap('fullpath/myicon.ico')
如果设置了窗口图标的时候需要用绝对路径。否则打包之后会找不到图标文件。
使用subprocess模块,无法隐藏命令行窗口的问题
#subprocess可以很方便的执行shell命令,比如
import subprocess
child = subprocess.Popen(['ping','www.baidu.com'])
这里涉及的问题有两个。
一、打包文件无法隐藏命令行窗口
网上解决有很多解决方法,但试过后都没啥用。
https://github.com/pyinstaller/pyinstaller/wiki/Recipe-subprocess
二、子进程如果耗费时间比较长,主进程等不等的问题。
因为做的是窗口程序,这个子进程如果费时较长,对应的ui的主进程还要有相应的提示。好麻烦。
最后用win32api 替换一些 subprocess
用subprocess执行一些cmd命令,比如磁盘管理、文件管理,都可以用win32api来替代。
比如:获取逻辑磁盘的信息
import win32api
win32api.GetLogicalDriveStrings()
#获取磁盘类型
win32file.GetDriveType(‘D:\\’)
感觉可以挖掘挖掘。os和shutil可以满足很多需要,一些偏僻的东西win32api可以作为补充。