使用pyqt弹出消息提示框

简介: 使用pyqt弹出消息提示框

使用pyqt弹出消息提示框

安装 pyqt

安装遇到问题 `No matching distribution found for PyQt5-Qt5>=5.15.2 (from pyqt5)`

还有 `To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.` 问题

`Ubuntu` 默认使用 `Python2` 更换默认配置为 `Python3`

测试验证

创建一个基本的GUI应用

各种样式的消息对话框示例

`Python` 程序打包

安装 `pyinstaller` 显示 `command not found`

总结


本文仅针对 Ubuntu 操作系统环境,其他系统环境待日后遇到再补充。本文主要内容参考Linux公社(https://www.linuxidc.com/Linux/2020-05/163168.htm


安装 pyqt

PyQt5是python模块,可让您非常快速地构建GUI应用程序。通常将它与Tkinter进行比较,但有一些区别。主要的一项是开发GUI的速度。 PyQt带有一个称为Qt-Designer的惊人工具,该工具是一个拖放界面,可根据您构建的GUI自动为您生成代码。这样可以更快地构建美观的应用程序。另一个区别是Tkinter默认带有Python 3+,必须在其中安装PyQt。


开始使用 PyQt5 的第一步是安装它。为此,我们将需要使用 pip。

执行以下命令来安装 PyQt5。


$ sudo apt-get install python3-dev
$ sudo apt-get install python3-pip
$ pip3 install pyqt5
$ pip3 install pyqt5-tools


安装遇到问题 No matching distribution found for PyQt5-Qt5>=5.15.2 (from pyqt5)

810f8f1458ae4e4c95456ac5fe4dc029.png

Could not find a version that satisfies the requirement PyQt5-Qt5>=5.15.2 (from pyqt5) (from versions: )
No matching distribution found for PyQt5-Qt5>=5.15.2 (from pyqt5)


这是由于 pip 工具没有更新导致的,执行以下命令:


$ pip3 install --upgrade pip3
$ pip3 install --upgrade pyqt5
$ pip3 install --upgrade pyqt5-tools


还有 To avoid this problem you can invoke Python with '-m pip' instead of running pip directly. 问题

这是由于存在 python2 的 pip 导致,使用 pip3 卸载 pip 即可,如下操作:


$ python -m pip uninstall pip

90de5b341db24055b8b5f538d054afc1.png


Ubuntu 默认使用 Python2 更换默认配置为 Python3

1.查看当前ubuntu系统已经安装的python版本及当前使用的python版本


$ python --version


2.设置update-alternativer 切换python版本


$ update-alternatives --list python


执行后显示:


update-alternatives: error: no alternatives for python #表示Python代替版本尚未安装


然后执行以下命令安装:


$ update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode
$ update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
update-alternatives: using /usr/bin/python3.6 to provide /usr/bin/python (python) in auto mode


查看默认版本


$ python --version


上述命令中因为我们设置 /usr/bin/python3.6 设置的优先级为2 所以update-alternatives命令自己设置3.6为默认


再次显示Python代替版本信息


$ update-alternatives --list python


切换版本 update-alternatives --config python


$ sudo update-alternatives --config python


3.python3版本安装pip


$ sudo apt-get install python3-pip


安装完以后运行 pip3 -V 显示版本


升级 pip 版本


$ pip3 install --upgrade pip


测试验证

只需要执行以下操作就能验证 pyqt5 是否正常安装配置了:


$ python3
> from PyQt5 import QtWidgets
> quit()

efd7d16471f741a5b7528386cdb82042.png

创建一个基本的GUI应用

在成功安装了 pyqt5 模块后,创建一个简单的 GUI 测试一下是否正常。

参考 Linux 公社例子,具体代码如下:


from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication,  QMainWindow, QLabel
import sys
def main():
    app = QApplication(sys.argv)
    win =  QMainWindow()
    win.setGeometry(300,300,600,400) 
    win.setWindowTitle("Linux公社www.linuxidc.com") 
    label =  QLabel(win)
    label.setText("<A  href='www.linxuidc.com.com'>Linux公社</a>")
    label.move(280,  150)
    label1 = QLabel(win)
    label1.setText("www.linuxidc.com")
    label1.adjustSize();
    label1.move(260, 180)
    win.show()
    sys.exit(app.exec_())
main()  # 确保调用该函数


一定主要 Python 代码缩进要保持一致,不然会报错的.

执行结果如下:

b66baf3ea1e74ce69fe512741b09bb30.png

各种样式的消息对话框示例

现在就将 pyqt5 中的各种消息对话框通过一个小示例展示一下,具体代码如下:


import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MyWindow(QWidget):
    def __init__(self,parent=None):
        super(MyWindow,self).__init__(parent)
        self.setWindowTitle("弹出式对话框例子")
        self.resize(400,200)
        self.btn1=QPushButton(self)
        self.btn1.setText("消息框")
        self.btn1.clicked.connect(self.msg1)
        layout=QVBoxLayout()
        self.btn2=QPushButton(self)
        self.btn2.setText("问答对话框")
        self.btn2.clicked.connect(self.msg2)
        self.btn3=QPushButton()
        self.btn3.setText("警告对话框")
        self.btn3.clicked.connect(self.msg3)
        self.btn4=QPushButton()
        self.btn4.setText("严重错误对话框")
        self.btn4.clicked.connect(self.msg4)
        self.btn5=QPushButton()
        self.btn5.setText("关于对话框")
        self.btn5.clicked.connect(self.msg5)
        layout.addWidget(self.btn1)
        layout.addWidget(self.btn2)
        layout.addWidget(self.btn3)
        layout.addWidget(self.btn4)
        layout.addWidget(self.btn5)
        self.setLayout(layout)
    def msg1(self):
        #使用infomation信息框
        QMessageBox.information(self,"标题","消息正文",QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
    def msg2(self):
         QMessageBox.question(self,"标题","问答消息正文",QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
    def msg3(self):
        QMessageBox.warning(self,"标题","警告消息正文",QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
    def msg4(self):
        QMessageBox.critical(self,"标题","严重错误消息正文",QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
    def msg5(self):
        QMessageBox.about(self,"标题","关于消息正文")
if __name__=="__main__":
    app=QApplication(sys.argv)
    win=MyWindow()
    win.show()
    sys.exit(app.exec_())


效果如下:

991de56ad0a6413e96cc9269048afc9d.png

消息对话框:

d443116c4a4e4d258d2bfe840f202aaf.png

问答对话框:

3ce7dd56c4d946c2b34832d75519d197.png


警告对话框

0dfb4f0754ef4436a214e6ed03f87f42.png

严重错误对话框

a914817b28534497bfd75f4368bb0d92.png

关于对话框:

8e6f7be55c69461eaf03936dc5063979.png

Python 程序打包

我们在通过自己的开发环境编写和测试好了界面程序,如果仅仅把我们编写好的执行 Python 脚本提供给对方,对方的 PC 环境下很可能没有我们的程序依赖环境,这时候我们最好把 Python 程序打包后再发给对方。


安装pyinstaller


pip install pyinstaller


准备好python文件, 这里可以使用刚刚我们用于测试的代码 demo.py


打包成可执行文件


终端输入:


pyinstaller -F demo.py


就可以生成可执行文件 demo 了:


在终端中输入 ./demo 运行:


常用参数:


-i 添加图标,后面紧跟图标路径,图标格式必须是.ico
-F 打包成一个exe文件
-w 使用窗口,无控制台
-c 使用控制台,无窗口
-D 创建一个目录,里面包含exe以及其他一些依赖性文件
pyinstaller -h 来查看参数


安装 pyinstaller 显示 command not found

到 pyinstaller 官网下载,https://github.com/pyinstaller/pyinstaller 下载到本地以后进行解压:


$ tar -xjf xx.tar.bz2


解压完成后进入文件夹执行:


$ python setup.py install


安装完成后就可以进入你的文件目录进行打包了。


总结

目前在界面应用开发中,由于跨平台的问题,Qt 和 pyqt 被大量使用,所以大家如果以后会接触到应用界面开发的话,可以考虑好好学习一下这方面哦 😃


相关文章
|
2天前
|
机器学习/深度学习 算法 Linux
Yolov5水果分类识别+pyqt交互式界面
Yolov5水果分类识别+pyqt交互式界面
107 1
|
2天前
|
开发框架 开发者 Python
探索Python GUI编程:从Tkinter到PyQt的全方位使用
在当今技术发展日新月异的时代,Python作为一种简洁高效的编程语言,拥有广泛的应用领域。其中,GUI(图形用户界面)编程是Python开发者经常涉足的领域之一。本文将介绍两个常用的Python GUI库——Tkinter和PyQt,并深入探讨其使用方法、特点以及适用场景,帮助读者全面了解Python GUI编程的魅力。
|
2天前
|
Python
PyQt绘制股票K线多图Y坐标对齐
PyQt绘制股票K线多图Y坐标对齐
73 0
|
6月前
|
Python
pyqt 重写关闭窗口事件代码
pyqt 重写关闭窗口事件代码
41 0
|
6月前
|
存储 Python
PySide2 Pyqt 解决pyinstaller打包图片资源的问题
PySide2 Pyqt 解决pyinstaller打包图片资源的问题
46 0
|
2天前
|
数据可视化 Linux C++
Python GUI编程:Tkinter与PyQt的选择
Python作为一门流行的编程语言,在GUI编程领域也有着非常强大的工具。其中,Tkinter和PyQt是两个备受推崇的GUI库。本文将介绍这两个库的优缺点,并帮助读者决定应该选择哪一个。
|
2天前
|
前端开发 Python
【Python • 项目实战】pytesseract+pyqt实现图片识别软件小项目——(二)实现QQ截图功能
【Python • 项目实战】pytesseract+pyqt实现图片识别软件小项目——(二)实现QQ截图功能
89 0
|
7月前
|
网络协议 Linux iOS开发
【100天精通python】Day40:GUI界面编程_PyQt 从入门到实战(完)_网络编程与打包发布
【100天精通python】Day40:GUI界面编程_PyQt 从入门到实战(完)_网络编程与打包发布
86 0
|
2天前
|
Python
PyQt学习------PyQt自定义信号
PyQt学习------PyQt自定义信号
11 0
|
2天前
|
图形学 Python
PyQt中图表的建立与显示(完整过程演示)
PyQt中图表的建立与显示(完整过程演示)
8 0