GUI-PyQt5|python3GUI--疫情信息快速查看工具By:PyQt5(附源码)


文章目录

  • 一.准备工作
    • 1.PyQt5
    • 2.PyQtWebEngine
  • 二.预览
    • 1.启动
    • 2.引擎切换
  • 三.源代码
    • 1.COVID19_viewer.py
    • 2.main_window.py
  • 四.总结

年关将至,大家对疫情的关注度也愈发提升,本次使用PyQt5撰写100行代码写一个疫情信息快速查看工具。
一.准备工作 1.PyQt5
PyQt 是一个用于创建GUI应用程序的跨平台的工具包,它将Python编程语言和Qt库 成功融合在一起。QT库目前是最强大的GUI库之一。
PyQt可以运行在所有主流操作系统上,包括UNIX,Windows和Mac OS 。
直接使用下面的命令安装即可:
pip install PyQt5
2.PyQtWebEngine
Qt WebEngine模块提供了一个web浏览器, 在不使用本地浏览器的情况下, 它可以很容易地把Web内容嵌入到Qt应用程序中.
Qt WebEngine为渲染HTML, XHTML和SVG文档, 使用CSS和JavaScript, 提供了C++类和QML类型
直接使用下面的命令安装即可:
pip install PyQtWebEngine
Qt WebEngine Widgets 模块
GUI-PyQt5|python3GUI--疫情信息快速查看工具By:PyQt5(附源码)
文章图片

二.预览 1.启动 GUI-PyQt5|python3GUI--疫情信息快速查看工具By:PyQt5(附源码)
文章图片

启动以后主窗口会自动加载最新的疫情信息,默认是百度的引擎。
2.引擎切换 GUI-PyQt5|python3GUI--疫情信息快速查看工具By:PyQt5(附源码)
文章图片

【GUI-PyQt5|python3GUI--疫情信息快速查看工具By:PyQt5(附源码)】通过在分组框选择引擎,实现对引擎的切换。
三.源代码 1.COVID19_viewer.py
import sys import base64 from PyQt5.Qt import * from PyQt5.QtWidgets import * from main_window import Ui_MainWindow from PyQt5.QtWebEngineWidgets importQWebEngineViewclass Covid19_viwer(QMainWindow): def __init__(self): super(Covid19_viwer, self).__init__() self.my_dict=eval(base64.decodebytes(b"""ezA6ICdodHRwczovL3ZvaWNlLmJhaWR1LmNvbS9hY3QvbmV3cG5ldW1vbmlhL25ld3BuZXVtb25p YScsIDE6ICdodHRwczovL25ld3Muc2luYS5jbi96dF9kL3lpcWluZzAxMjEnLCAyOiAnaHR0cHM6 Ly93cC5tLjE2My5jb20vMTYzL3BhZ2UvbmV3cy92aXJ1c19yZXBvcnQvaW5kZXguaHRtbCcsIDM6 ICdodHRwczovL25ld3MucXEuY29tL3p0MjAyMC9wYWdlL2ZlaXlhbi5odG0jLycsIDQ6ICdodHRw czovL3NhLnNvZ291LmNvbS9uZXctd2ViYWxsL3BhZ2Uvc2dzL2VwaWRlbWljJywgNTogJ2h0dHBz Oi8vbmV3cy5pZmVuZy5jb20vYy9zcGVjaWFsLzd0UGxEU3pEZ1ZrJywgNjogJ2h0dHA6Ly93d3cu dGNyai5jb20uY24veXF6dC9pbmRleC5jaHRtbCcsIDc6ICdodHRwOi8vc2hvdWppLjM2MC5jbi9m eXlxZ2p4L2luZGV4Lmh0bWwnLCA4OiAnaHR0cHM6Ly9uY292LmR4eS5jbi9uY292aDUvdmlldy9w bmV1bW9uaWEnLCA5OiAnaHR0cHM6Ly92aXAuamlhbnNoaWFwcC5jb20vcC9jb3ZpZDE5LW92ZXJz ZWFzJywgMTA6ICdodHRwczovL2kuc25zc2RrLmNvbS91Z2MvaG90Ym9hcmRfZmUvaG90X2xpc3Qv dGVtcGxhdGUvaG90X2xpc3QvZm9ydW1fdGFiLmh0bWwnLCAxMTogJ2h0dHA6Ly9tLnNpbm92aXNp b24ubmV0L25ld3BuZXVtb25pYS5waHAnfQ==""")) self.ui=Ui_MainWindow() self.ui.setupUi(self) self.broswer=QWebEngineView() self.Layout = QHBoxLayout(self.ui.frame) self.Layout.setContentsMargins(0, 0, 0, 0) self.Layout.addWidget(self.broswer) self.broswer.load(QUrl(self.my_dict[0])) self.slot_init()def slot_init(self): self.ui.comboBox.currentIndexChanged[int].connect(self.change_engine) self.broswer.loadFinished.connect(self.change_state) self.broswer.loadProgress[int].connect(self.show_load_progress)@pyqtSlot(int) def change_engine(self,index): """ 改变引擎,触发 :param index: :return: """ self.ui.comboBox.setEnabled(False) self.broswer.load(QUrl(self.my_dict[index]))def change_state(self): """ 加载过程中,禁用comboBox :return: """ self.ui.comboBox.setEnabled(True)def show_load_progress(self,p): """ 显示浏览器加载进度 :param p: :return: """ self.ui.statusBar.showMessage(str(p)+"%") if p==100: self.ui.statusBar.showMessage("完成",3000)def closeEvent(self,event): ret=QMessageBox.question(self,"退出","确定要退出吗?",QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes) if ret==QMessageBox.Yes: event.accept() else: event.ignore()if __name__ == '__main__': app=QApplication(sys.argv) ui=Covid19_viwer() ui.show() sys.exit(app.exec_())

2.main_window.py
# -*- coding: utf-8 -*-from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout_3.setObjectName("verticalLayout_3") self.verticalLayout_2 = QtWidgets.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setContentsMargins(-1, 10, -1, 10) self.horizontalLayout.setObjectName("horizontalLayout") spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.label = QtWidgets.QLabel(self.centralwidget) self.label.setObjectName("label") self.horizontalLayout.addWidget(self.label) self.comboBox = QtWidgets.QComboBox(self.centralwidget) self.comboBox.setEnabled(False) self.comboBox.setObjectName("comboBox") self.comboBox.addItem("") self.comboBox.addItem("") self.comboBox.addItem("") self.comboBox.addItem("") self.comboBox.addItem("") self.comboBox.addItem("") self.comboBox.addItem("") self.comboBox.addItem("") self.comboBox.addItem("") self.comboBox.addItem("") self.comboBox.addItem("") self.comboBox.addItem("") self.horizontalLayout.addWidget(self.comboBox) spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem1) self.verticalLayout_2.addLayout(self.horizontalLayout) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.frame = QtWidgets.QFrame(self.centralwidget) self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame.setFrameShadow(QtWidgets.QFrame.Raised) self.frame.setObjectName("frame") self.horizontalLayout_2.addWidget(self.frame) self.verticalLayout_2.addLayout(self.horizontalLayout_2) self.verticalLayout_2.setStretch(0, 1) self.verticalLayout_2.setStretch(1, 20) self.verticalLayout_3.addLayout(self.verticalLayout_2) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusBar = QtWidgets.QStatusBar(MainWindow) self.statusBar.setObjectName("statusBar") MainWindow.setStatusBar(self.statusBar)self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "疫情情况快速查询")) self.label.setText(_translate("MainWindow", "引擎选择:")) self.comboBox.setItemText(0, _translate("MainWindow", "百度")) self.comboBox.setItemText(1, _translate("MainWindow", "新浪")) self.comboBox.setItemText(2, _translate("MainWindow", "网易")) self.comboBox.setItemText(3, _translate("MainWindow", "腾讯")) self.comboBox.setItemText(4, _translate("MainWindow", "搜狗")) self.comboBox.setItemText(5, _translate("MainWindow", "凤凰")) self.comboBox.setItemText(6, _translate("MainWindow", "猕尔")) self.comboBox.setItemText(7, _translate("MainWindow", "360")) self.comboBox.setItemText(8, _translate("MainWindow", "丁香园")) self.comboBox.setItemText(9, _translate("MainWindow", "华尔街")) self.comboBox.setItemText(10, _translate("MainWindow", "今日头条")) self.comboBox.setItemText(11, _translate("MainWindow", "美国中文网"))

四.总结 本次使用PyQt5开发了一款疫情信息快速查看工具,实现了多个数据源的查看,代码量不大,功能相当于浏览器,只是限定了一些特定网址。希望大家也动手做起来,程序打包好放在了百度云(密码:8888)思路、代码方面有什么不足欢迎各位大佬指正、批评!
GUI-PyQt5|python3GUI--疫情信息快速查看工具By:PyQt5(附源码)
文章图片

    推荐阅读