pyqt图形化

在安装pyqt之前,我们先创建虚拟环境,由于我们使用qt开发完软件之后,需要打包成exe程序,所以通过创建虚拟环境之后再安装模块和包,那么后面打包的时候就只会打包虚拟环境里面的模块和库,避免exe程序过于臃肿

创建虚拟环境

在PyCharm中,在左下角的解释器中选择添加,选择新生成,地址选择目前的项目路径

基本ui

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import sys
from PyQt5.QtWidgets import QApplication,QWidget
if __name__ == "__main__":
app = QApplication(sys.argv)
#sys.argv是本程序的运行的一些参数

#实例一个窗口对象
w=QWidget()

#设置窗口标题
w.setWindowTible("第一个pyqt")

#展示窗口
w.show()

#程序进行循环等待状态
#不停刷新,监测用户操作
app.exec_()

控件

按钮

1
2
3
4
5
6
7
8
9
10
from PyQt5.QtWidgets import QPushButton

#在窗口添加控件
bth = QPushButton("按钮")

#设置按钮的父类为当前窗口,等于在窗口中显示(可以用于嵌套窗口)
bth.setParent(w)

#可以一句话表示
bth = QPushButton("按钮",w)

文本

1
2
3
4
5
6
7
from PyQt5.QtWidgets import QLabel

#在窗口添加控件
label = QLabel("账号:",w)

#设置位置和大小 x,y,w,h
label.setGeometry(20,20,30,30)

输入框

1
2
3
4
5
6
7
from PyQt5.QtWidgets import QLineEdit

#在窗口添加控件
LineEdit = QLineEdit(w)
LineEdit.setPlaceholderText("请输入")
LineEdit.setGeometry(20,20,30,30)

窗口

窗口大小

1
w.resize(300,300)

窗口位置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#将窗口设置在桌面左上角(绝对位置)
w.move(0,0)

#将窗口设置在桌面中央(如果不设置,也会显示在桌面中央,但是有时候会有问题)
# 调整窗口在屏幕中央显示
# center pointer = QDesktopWidget().availableGeometry().center( )
#x= center pointer.x()
#y= center pointer.y()
##w.move(x,y)
##w.move(x-150,y-150)
# print(w.frameGeometry())
# print(w.frameGeometry().getRect())
# print(type(w.frameGeometry().getRect()))
# old_x,old_y,width, height = w.frameGeometry().getRect()#w.move(x-width/2,y-height /2)

设置窗口图标

1
2
from PyQt5.QtGui import QIcon
w.setWindowIcon(QIcon('favicon.ico'))

信号和槽

语法 对象.信号.connect.(槽函数)

通过窗口控件的对象的信号绑定槽函数,当对象的信号被触发的时候,槽函数被调用

自定义信号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from PyQt5.QtCore import pyqtSignal

class MYwindow (QWidget):
#声明一个信号
MYxh = pyqtSignal(str)
#获取ui
def init_ui(self):
self.ui= uic.loadUi("./untitled.ui")
bth =self.ui.pushButton
bth.clicked.connect(self.B)
#信号绑定槽函数
self.MYxh.connect(self.A)

def A(self,a):
print(a)
def B (self):
#发送MYxh信号
self.MYxh.emit("aaa")


QT designer

下载

1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5-tools

终端启动

1
pyqt5-tools designer

加载

设计好ui之后,保存之后

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
29
30
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5 import uic

class MYwindow (QWidget):
def __init__(self):
super().__init__()
self.init_ui()

def init_ui(self):
self.ui= uic.loadUi("./untitled.ui")
print(self.ui.__dict__)#获取ui里面所有的对象和属性(以字典的形式返回)
print(self.ui.label)#获取UI里面的具体对象
print(self.ui.label.text) # 获取UI里面的具体对象的属性
print(self.ui.label.text()) # 获取UI里面的具体对象的属性的内容


if __name__ == "__main__":
app = QApplication(sys.argv)
# sys.argv是本程序的运行的一些参数

# 实例一个窗口对象
w = MYwindow()

# 展示窗口
w.ui.show()

# 程序进行循环等待状态
# 不停刷新,监测用户操作
app.exec_()

打包

下载pyinstaller

1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

终端导航到项目目录,打开主脚本

1
pyinstaller -F main.py -w