qyqt5 的简单使用

pyqt5 是python用来制作GUI程序的一个包。

pyqt5 使用:

使用时先用QtDesigner设计一个ui界面文件,然后用在cmd里用pyuic5 -o Window.py untitled.ui 命令将ui文件转为py文件。

在主程序py文件里调用生成的py界面文件,对界面上的控件进行操作。

主程序有一个编写套路,照着往里面加就行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import sys, os
# 导入相关包
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QIcon
# 导入qt设计的窗口文件
from Window import Ui_Form


class MyMainForm(QMainWindow, Ui_Form):
def __init__(self, parent=None):
super(MyMainForm, self).__init__()
self.setupUi(self)
# 按钮绑定函数
# self.pushButton.clicked.connect(self.plot)
'''
这里加入自己的代码
'''

if __name__ == "__main__":
app = QApplication(sys.argv)
# 初始化
myWin = MyMainForm()
myWin.setWindowIcon(QIcon("logo.ico")) # 设置窗口图标
myWin.setWindowTitle("main") # 设置窗口名
# 将窗口控件显示在屏幕上
myWin.show()
# 程序运行,sys.exit方法确保程序完整退出。
sys.exit(app.exec_())

控件操作比如获取文本框输入、点击按钮执行某个函数、按回车键执行某个函数、显示控件上展示文本或图片、打开文件按钮。

将py程序打包成exe

写的界面程序一般都想让别人用用,但是别人电脑上不一定有相关python环境,所以转成exe会方便很多。

pyinstaller是一个将py转成exe常用的包。

用pyinstaller打包成exe后文件太大,我写的一个简单的程序就有300多M,使用upx压缩也没用,它应该是自带upx压缩了。

是因为它在打包时会将很多无关的包一块打包进来,虽说可以修改spec文件里exclude选项让一些库不参与打包,但是并不能确定哪些是必要的。

比较好的方法是用pipenv创建虚拟环境,只安装程序必要的一些库,然后打包成exe,这样就不会将很多无关的包也打包进来。试了一下,能将300多M减小到了60多M。

步骤:

1.安装pipenv:pip install pipenv

2.选择一个文件夹执行pipenv –three ,利用本机的python3版本创建虚拟环境

3.执行pipenv shell 进入虚拟环境,进入虚拟环境后执行的命令才使用的是虚拟环境里的,与普通cmd里的环境互不干扰。修改目录下的pipfile里的安装源,换成阿里或者清华这些国内的,执行pipenv install 包名,安装用到的包。

同时需要安装pyinstaller。

pip list 查看虚拟环境里安装的包。

(8条消息) Pipenv使用入门_Hanniel的博客-CSDN博客

4.在虚拟环境里执行pyinstaller -F -w main.py,将main.py打包成exe。加图标时 -i logo.ico。

-F 打包成单个exe文件,-w 打开exe时不打开命令行。

但是打包成的单个的exe打开时比较慢,没有不单个时打开的快。

其他:

将控件变成透明:

styleSheet添加background:transparent;

image-20210511133936778

设置背景:

图片来源:(8条消息) Qt designer 中设置背景图片,以及子窗体不继承父窗体背景的方法_MacwinWin的博客-CSDN博客

image-20210511133936778

image-20210604105834323