使用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)

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. 问题

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

$ python -m pip uninstall pip

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()

创建一个基本的GUI应用

在成功安装了 pyqt5 模块后,创建一个简单的 GUI 测试一下是否正常。
参考 Linux 公社例子,具体代码如下:

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication,  QMainWindow, QLabel
import sysdef 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 代码缩进要保持一致,不然会报错的.
执行结果如下:

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

现在就将 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_())

效果如下:


消息对话框:

问答对话框:

警告对话框

严重错误对话框

关于对话框:

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

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

总结

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

使用pyqt弹出消息提示框相关推荐

  1. php 消息对话框弹出,php弹窗代码_php弹出消息提示框的二种方法

    摘要 腾兴网为您分享:php弹出消息提示框的二种方法,优衣库,新浪博客,万师傅,顺丰等软件知识,以及符号,甘肃农商银行,彗星小,kindle人社区,广东省公务用车管理,宝鸡在线,火影忍者英文版,寂静岭 ...

  2. Sharepoint 弹出消息提示框

    在event receiver中如何弹出一个类似winform中messagebox.show 的框? 那我要对用户显示一些错误信息或者提示信息怎么搞? 1. 如果是在ItemAdding或者其他进行 ...

  3. PHP实现弹出消息提示框的两种方法

    方法一: 代码如下: echo "<script>alert('提示内容')</script>"; 方法二: 代码如下: echo '<script ...

  4. 案例:文件下载需求:1. 页面显示超链接 2. 点击超链接后弹出下载提示框 3. 完成图片文件下载||中文文件问题

    文件下载需求:     1. 页面显示超链接     2. 点击超链接后弹出下载提示框     3. 完成图片文件下载 * 分析:     1. 超链接指向的资源如果能够被浏览器解析,则在浏览器中展示 ...

  5. C#中在鼠标经过Button控件时显示提示信息(弹出气泡提示框)

    C#有个ToolTip的控件是弹出气泡提示框的,在界面上放一个ToolTip1控件,可以在所有需要弹出气泡的控件的属性中的"toolTip1的ToolTip"填写需要提示的信息就行 ...

  6. 关于360防火墙弹出木马提示框,是由于执行文件加密引起,已将提交360认证,请放心使用...

    DroidPilot的可执行文件经加密后,会被360防火墙弹出木马提示框.我公司已将执行文件提交360,且通过了认证,应该不会再有提示,请放心使用. <ignore_js_op> 2013 ...

  7. java弹出浏览器提示框_js弹出框、对话框、提示框、弹窗总结

    一.JS的三种最常见的对话框 //====================== JS最常用三种弹出对话框 ======================== //弹出对话框并输出一段提示信息 funct ...

  8. ValidationSummary控件无法弹出错误提示框

    使用控件RequiredFieldValidator加上ValidationSummary,验证必填项是否为空,若为空则在消息框中显示错误,实际测试中发现并不弹出消息框.甚至页面会显示" [ ...

  9. php点击文字弹出js提示框,js弹出框、对话框、提示框、弹窗实现方法总结(推荐)...

    一.JS的三种最常见的对话框 //====================== JS最常用三种弹出对话框 ======================== //弹出对话框并输出一段提示信息 funct ...

最新文章

  1. navicat for mysql 怎么连接远程数据库服务器
  2. 几个UI Prototype应用的使用感受
  3. linux+sar+服务,sar服务监控Linux
  4. 笔记-项目成本管理-估算成本的步骤
  5. 初学HTML5系列二:HTML5新增的事件属性
  6. 风寒感冒和 风热感冒
  7. 开源开放 | 开源立体化漏洞情报知识图谱(四维创智)
  8. java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFSheet.getMergedRegion
  9. “Head First 设计模式“ :策略模式
  10. paip.手机时间设置不能修改灰色禁用 解决大法
  11. elementui的横向滚动_记一次element-ui配置化table组件的适应性问题(横向滚动条)...
  12. 初识Ozone和Segger J-Link Trace Pro
  13. ‘文件夹正在使用‘解决方案
  14. C# 制作一个倒计时器
  15. Android系统编程入门系列之应用环境及开发环境介绍
  16. 为什么美国大城市里不修二环三环四环五环?
  17. 软件测试面试中会问的几个方面
  18. Android基础篇 访问Assets文件夹里面的资源【文本、图片、音频、字体包】
  19. 【域渗透提权】CVE-2020-1472 NetLogon 权限提升漏洞
  20. R包 splatter

热门文章

  1. GIT上优秀的IOS框架
  2. matlab做混频,基于MATLAB的混频测试
  3. Shipyard的几个概念
  4. 网络文化经营许可证和icp许可证的区别
  5. 简单介绍一下HBase、Cassandra、Voldemort、Redis、VoltDB、MySQL
  6. 为什么地球上的第一个复杂生命体出现在海洋中
  7. 计算机10秒后重新启动,电脑主机开机几秒或者几十秒自动断电关机
  8. 想进BAT等大厂,到底要怎么做?
  9. 第6周作业3-Fibonacci数列(网络131黄宇倩)
  10. Python条件判断