提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
为了督促自己自学PyQt 专门自己开了一个专栏,若有错误,请大家及时指出,谢谢
一、PyQt5?
QT :可用来开发桌面应用程序和非GuI应用程序
PyQt5:即允许python对qt库进行调用和编写
二、安装环境
1.下载python开发环境
2.通过命令行安装pyqt5
pip install pyqt5
****如果有多个python环境****
注意 pip的位置 即将pyqt5安装在了哪个python环境下
3、安装python集成环境
这里推荐pycharm专业版,至于如果破解,请自查百度
三、快速上手第一个PyQt5的GUI
import sys
from PyQt5.QtWidgets import QApplication,QWidget
#如果项目从这个py文件开始,则执行这个main函数
if __name__ == '__main__':
#创建一个应用
app=QApplication(sys.argv)
#创建一个窗口
w=QWidget()
#设置窗口大小
w.resize(680,450)
#设置窗口位置
w.move(500,400)
#设置窗口标题
w.setWindowTitle("第一个PyQt5程序")
#显示窗口
w.show()
#这是一个通用语句,进入程序主循环,并通过exit函数确保主程序安全结束
sys.exit(app.exec())
四、安装QTdesigner(可视化开发工具)
因为我下载了Anaconda 里边自带的有,所以就不必在安装了。直接在pycharm中导入外部工具包即可
我的designer目录:C:\ProgramData\Anaconda3\Library\bin
由于每次都需要找到这个可视化工具太麻烦,所以直接将其导入pycharm方便使用
1.找到项目的setting
2、导入designer.exe
除了框起来的填写自己exe文件所在位置,其他按照我的来就可以
3、在文件下右键 点击,可视化工具即可使用
成功!
五、可视化工具得到的是.ui文件 转.py
方法1、 导入外部工具
如何将其转化为py文件 可以使用命令行 但比较麻烦 所以这里还是用外部包
找到Pyuic5.exe所在位置
见文章
点击此处文章
方法2、在终端输入
python -m PyQt5.uic.pyuic xxxxx.ui -o xxxxx.py
注意是在当前ui文件所在的文件夹的终端下
比如我的ui文件是在day01项目的python文件下 -o后是生成py文件的名字
六、将可视化窗口显示出来
1、将ui文件保存在项目文件下,并通多PYuic变成py文件。
2、在创建一个py文件,去调用Py文件中的类和方法。
不要在以生成的py文件中编写,防止修改了ui文件后在生成oy文件,导致代码丢失
# 时间:2022/10/31 15:07
# cky
from PyQt5.QtWidgets import QApplication,QMainWindow
#引入由ui文件生成的PY文件
import horizontal
import sys
if __name__ == '__main__':
app=QApplication(sys.argv)
#创建一个主窗口
mainwindow=QMainWindow()
#实例化py文件的类
ui=horizontal.Ui_MainWindow()
#类中的方法,接收一个窗口,往窗口上增加自己设计的空间
ui.setupUi(mainwindow)
#显示主窗口
mainwindow.show()
#安全退出
sys.exit(app.exec())
七、designer中的控件略讲(这里都是基于designer来设计的,并没有设计到具体代码层次)
(一)水平,垂直,栅格,表格布局以及容器
可以先拖拽控件,在添加布局
也可以先拖拽布局格式,再添加控件
**摆放控件时要尽可能整齐,系统才能正确识别**
不知道为什么如果我先拖拽控件,在使用布局,在对象查看器中就不显示这个布局???有知道的大佬可以指教一下~~
知道了,必须要确保选中了所有控件!!
如图是成功的 这可以看出来选中了这三个
这个就会失败 按钮上没有框,证明没选中
(二)空隙以及分割线
空隙可以自行设置高度和宽度,注意sizetype要为fixed
(三)尺寸策略(不是很理解)
控件有最大最小期望尺寸,还有默认尺寸(尺寸期望)策略不能更改,但是可以获得一个控件的期望尺寸或者最大最小期望尺寸。
print(self.pushButton_3.sizeHint().width()) #获得期望尺寸的宽
print(self.pushButton_3.minimumSizeHint().width()) #获得最小期望尺寸的宽
例子:
可以将两个控件放在一个水平布局里,之后设置水平策略为Expending
控件可以自行增大或者缩小.,之后设置水平伸展,可以固定这些控件的比例
如一个控件水平伸展为1 另一个为2,则不论水平方向再怎么拉伸,比例都为1:2
热键和快捷键(hotkey and shortcut key)
(四 )控件伙伴关系
1、热键与快捷键
热键是跟在功能菜单后的带下划线的键,直接按下就可以,只有看到了才可以使用;快捷键一般为组合键,不需要看到菜单后定义的快捷按钮,直接按组合键即可实现其功能。
热键必须在能看见该热键的情况下才有效,就是说如果是菜单上的热键,就要先弹出菜单,才能使用热键;而快捷键则无须弹出菜单。快捷键还要分windows系统快捷键和软件自定义的快捷键,前者在操作系统中通用,不论你处于什么状态你都可以使用他,且含义都一样,而后者只能在定义了该快捷键的软件中使用,且各软件可以把他定义成不同的含义。对于热键,可以是在菜单中,也可以是在按钮中,一般情况下,直接按下热键就可以执行相应操作,但如果当前焦点处于可录入的控件中,则要在热键前加上ALT键,否则,你就直接把热键输入到了文本框内了。(如下文案例中的文本框,属于可录入控件,需要加上ALT,才能让焦点在该控件上)
2、设置伙伴关系
点击EDIT中的编辑伙伴关系 之后拖拽 即可绑定
记得编辑完成之后要退出编辑页面,这时需要点击Edit中的编辑窗口部件(下述编辑Tab顺序也同理)
显示出来的效果
按住 ALT+B 即可让焦点对准年龄这个输入框
(五)编辑Tab顺序
有多个文本框控件,默认情况下都是从上到下
这里可以编辑修改Tab顺序
点击Edit->编辑Tab顺序 即可修改
(六)信号与槽
信号:即发送的信号(事件),比如单击按钮等
槽:接收事件的函数或方法等。
一个信号可以绑定多个槽,一个槽可以拦截多个信号
下述是简单的信号与槽的案例:如关闭窗口 或一个文本框的显示与隐藏,可用与不可用等(这里并没有自己编写函数,只是通过edit中的编写信号与槽来进行事件的绑定)
(六)菜单栏,工具栏,状态栏
创建主窗口可以添加菜单栏,工具栏和状态栏,也可以移除
菜单栏中可以编写文本,需要双击并且编写完之后需要点击Enter
之后可以输入每个菜单栏选项下方的文本。注意分隔符需要双击才会生效
对于工具栏,无法直接输入和编辑,也无法往其中拖拽控件。
可以点击动作编辑器,找到对应动作,然后将其拖拽过去才可以。
动作编辑器中的动作,也可以双击来修改相应属性,也可以添加快捷键。
注意
对于PYqt5以上的版本 使用WebView时 在显示时会报错,需要
pip install PyQtWebEngine
之后再生成的py 文件找到 from PyQt5 import QtWebEngineWidgets
修改为 from PyQt5.QtWebEngineWidgets import *
之后再找到文件中的 将我框住的删除点,只保留
QWebEngineView(self.centralwidget) 即可