背景课程设计是使用PyQt制作GUI并打包成.exe文件。在学习PyQt的时候,做了一个读图的小程序。顺便试试用PyInstaller打包。文PyInstaller的安装是我用的时候安装的。应该是大三尝试玩的时候安装的,这里就不展示了。使用win+R打开PyInstaller的运行窗口,输入cmd回车进入控制台进入要打包的py文件目录,输入d:进入D盘,输入cdD:\_study\Grade4-1\CourseDesign\learn_PyQt\mine进入py在文件所在文件夹下输入命令pyinstaller-F-w-ifavicon.icomine.py-F。生成的dist文件夹只包含一个exe程序-w打开exe文件时,只有目标窗口,没有丑陋的控制台-ifavicon.ico给程序添加一个指定路径的图标。这里只能是ico文件。JPG会报错。我试过我的.py。待打包的py文件的各个参数的含义和使用方法在附件链接的文章中有详细说明。等待打包完成后,打开exe文件。打包完成后,文件夹中会出现以下新项目:_pycache_builddist三个文件夹。mine.specexe文件位于dist文件夹中。点击运行。过程中遇到的问题及解决办法图标格式必须是ico。用jpg打包的时候会报错。程序中使用的图片素材等,代码引用素材时使用相对路径'res/faye.jpg'。看来需要在系统主python环境下安装需要的库。我的PyQt一开始只安装在anaconda创建的虚拟环境中,导致打包后点击exe后没有出现图形界面。在主环境中安装PyQt5。题后总结这是我第一次写博文记录学习,也是第一次使用markdown编辑文本,请见谅有点绿:)感谢plb花费100+mb流量帮我测试程序在陌生环境下运行。附录PyInstaller参数含义简单图形程序代码importsysimportcv2importnumpyfromPyQt5.QtWidgetsimportQApplication,QWidget,QPushButton,QMessageBox,QLineEditfromPyQt5.QtGuiimportQIconfromrandomimportrandintclassExample(QWidget):super__init__(se__init__()self.initUI()#self.filename='a.jpg'definitUI(self):self.setGeometry(300,300,300,150)self.setWindowTitle('读取图片')self.setWindowIcon(QIcon('res/faye.jpg'))self.bt1=QPushButton('Read',self)self.bt1.setGeometry(115,90,70,30)self.bt1.setToolTip('点击此处阅读图片')self.bt1.clicked.connect(self.showMessage)self.text=QLineEdit('这里输入文件路径(不要包含中文)',self)self.text.selectAll()self.text.setFocus()self.text.setGeometry(25,50,250,30)self.show()defshowMessage(self):filename=self.text.text()#print(filename)img=cv2.imread(filename)img1=cv2.imread('a.jpg')iftype(img)==type(img1):QMessageBox.about(self,'小问题...','路径好像不对')自己。text.selectAll()self.text.setFocus()else:cv2.imshow(filename,img)cv2.waitKey(0)self.text.clear()self.text.setText('这里输入文件路径(不要包含中文)')self.text.selectAll()self.text.setFocus()defcloseEvent(self,event):reply=QMessageBox.question(self,'Confirm','Areyousuretoexit',QMessageBox.Yes|QMessageBox.No,QMessageBox.No)ifreply==QMessageBox.Yes:event.accept()else:event.ignore()if__name__=='__main__':app=QApplication(sys.argv)ex=Example()sys.exit(app.exec_())
