关于使用pyqt弹出消息提示框的问题
作者:跑不了的你 发布时间:2022-02-15 22:22:01
本文仅针对 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. 问题
这是由于存在 python2
的 pip
导致,使用 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 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 代码缩进要保持一致,不然会报错的.
执行结果如下:
各种样式的消息对话框示例
现在就将 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
安装完成后就可以进入你的文件目录进行打包了。
来源:https://blog.csdn.net/qq_37596943/article/details/122565711
猜你喜欢
- 以去掉去掉<!--和-->为例进行说明:def clearContentWithSpecialCharacter(content
- 基础理论第一层:卷积层。第二层:卷积层。第三层:全连接层。第四层:输出层。图中原始的手写数字的图片是一张 28×28 的图片,并且是黑白的,
- 场景游戏里有很多关卡(可能有几百个了),理论上每次发布到外网前都要遍历各关卡看看会不会有异常,上次就有玩家在打某个关卡时卡住不动了,如果每个
- 利用线程生成缩略图;读取当前路径下的png文件,在当前路径下生成6464,128128和32*32的缩略图。""&quo
- 局部变量什么是局部变量通俗定义:函数内部定义的变量就叫局部变量。话不多说,代码如下:def test1(): a = 300 # 定义一个局
- 一行代码对话ChatGPT最近ChatGPT火爆全球,哪怕你不是程序员,应该也听过他的大名了。今天我们就来一起体验一下~1行Python代码
- 在有些情况下,利用try…except来捕捉异常可以起到代替if…else的作用。比如在判断一个链表是否存在环的leetcode题目中,初始
- composer是PHP中非常优秀的一个包管理工具,可以帮助我们来管理项目所需要依赖的所有包以及插件,也可以用来从packagist中创建一
- 最近在写的一个django小项目需要实现用户上传图片的功能,使用到了七牛云存储,特此记录下来。这里我使用的七牛python SDK 版本是7
- 函数,对于人类来讲,能够发展到这个数学思维层次,是一个飞跃。可以说,它的提出,直接加快了现代科技和社会的发展,不论是现代的任何科技门类,乃至
- 声明:请事先到官网下载echarts,另外本文引用了adminlte模板构建前台页面views:<!-- /.row --> &
- 1.在pycham官网下载安装软件https://www.jetbrains.com/pycharm/download/2.我下载的是64位
- 本文主要讲述的是对Python中property属性(特性)的理解,具体如下。定义及作用:在property类中,有三个成员方法和三个装饰器
- 本文实例讲述了Python实现绘制双柱状图并显示数值功能。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-#!
- 一、前言Python语言近年来人气爆棚。它广泛应用于数据科学,人工智能,以及网络安全问题中,由于代码可读性较强,学习效率较高,吸引了许多非科
- 在这可以用join()函数'x'.join(y),x可以是任意分割字符,y是列表或元组。以列表为例,可以将列表中的每一个元素
- 同步的方法基本与多线程相同。1) Lock当多个进程需要访问共享资源的时候,Lock可以用来避免访问的冲突。import multiproc
- 混淆矩阵 混淆矩阵(Confusion Matrix)是机器学习中用来总结分类模型预测结果的一
- PDO::errorCodePDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE(PHP 5 >= 5
- 函数的参数:Python中函数定义非常简单,由于函数参数的存在,使函数变得非常灵活应用广泛;不但使得函数能够处理复杂多变的参数,还能简化函数