使用pyqt弹出消息提示框

11 篇文章 6 订阅


本文仅针对 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 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

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

总结

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

  • 10
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt 是一个用于创建GUI应用程序的Python库,可以用于创建各种函数丰富的窗口。要使用PyQt创建带有进度条的弹窗,我们可以按照以下步骤进行操作: 1. 导入PyQt库中的必要模块,比如`QtWidgets`和`QtCore`。 2. 创建一个继承自`QDialog`的自定义窗口类。该类将包含进度条和其他所需的组件。 3. 在自定义窗口类的构造函数中,设置窗口的初始属性,比如标题、大小和布局。 4. 创建一个进度条组件,并将其添加到窗口布局中。 5. 创建一个用于更新进度条的槽函数。槽函数将使用`setValue()`方法来更新进度条的值。 6. 向窗口中添加一个按钮,并将其与槽函数关联。 7. 使用`QThread`类创建一个新的线程,并将其关联到自定义窗口类的槽函数上。 8. 在线程的执行函数中,通过循环和适当的延迟,逐渐增加进度条的值。 9. 运行应用程序主循环,显示弹窗。 下面是一个简单的示例代码,实现了上述步骤中的操作: ``` from PyQt5.QtWidgets import QApplication, QDialog, QProgressBar, QPushButton, QVBoxLayout from PyQt5.QtCore import QThread, pyqtSignal, QTimer class MyDialog(QDialog): def __init__(self): super().__init__() self.setWindowTitle("进度条弹窗") self.resize(300, 100) layout = QVBoxLayout(self) self.progressbar = QProgressBar() layout.addWidget(self.progressbar) button = QPushButton("开始") layout.addWidget(button) button.clicked.connect(self.start_progress) self.timer = QTimer(self) self.timer.timeout.connect(self.update_progress) self.thread = MyThread() def start_progress(self): self.timer.start(100) self.thread.start() def update_progress(self): value = self.progressbar.value() if value < 100: self.progressbar.setValue(value + 10) else: self.timer.stop() class MyThread(QThread): def run(self): for i in range(11): self.msleep(100) self.quit() if __name__ == "__main__": app = QApplication([]) dialog = MyDialog() dialog.show() app.exec_() ``` 以上代码创建了一个简单的弹窗窗口,其中包含一个进度条和一个用于触发进度更新的按钮。单击按钮后,会启动一个新的线程,并在定时器的帮助下逐渐增加进度条的值。当进度条达到100时,定时器停止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值