📜  获取 Corona 案例详细信息 – Python PyQt5(1)

📅  最后修改于: 2023-12-03 14:57:12.414000             🧑  作者: Mango

获取 Corona 案例详细信息 – Python PyQt5

简介

本文将介绍如何使用 Python 和 PyQt5 库来获取 Corona 病毒案例的详细信息。我们将通过创建一个简单的 GUI 应用程序来演示如何获取数据并将其显示在应用程序中。

程序演示

先看一下最终的程序演示效果:

程序演示

如上图所示,我们的应用程序会展示全球 Corona 案例的详细信息。可见,本程序通过 PyQt5 库实现了一些基本操作,如在菜单栏添加 QAction、使用 QTableWidget 显示数据表格等。现在,我们来看一下如何实现这个功能。

实现步骤
步骤一:安装必要的库

我们需要安装以下库来完成这个任务:

  • PyQt5:用于创建 GUI 应用程序。
pip install PyQt5
  • requests:用于从网络获取数据。
pip install requests
步骤二:获取数据

我们将使用一个免费的 API 来获取 Corona 病毒案例的详细数据,在此,我们使用 rapidapi.com 的免费公共 API。

import requests

url = "https://covid-19-data.p.rapidapi.com/totals"

headers = {
    'x-rapidapi-host': "covid-19-data.p.rapidapi.com",
    'x-rapidapi-key': "YOUR_API_KEY"
}

response = requests.request("GET", url, headers=headers)

data = response.json()

这样我们就成功获取了数据,并将其存储在变量 data 中。

步骤三:创建 GUI 应用程序

为了确保我们的应用程序具有良好的用户界面,我们将使用 PyQt5 库来创建它。我们可能需要创建一个菜单栏和一个表格,用于显示数据。

添加 QAction

我们将在菜单栏中添加 QAction 并为其添加一个槽函数。

from PyQt5.QtWidgets import QMainWindow, QAction

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        # 添加菜单栏
        menubar = self.menuBar()

        # 添加 File 栏
        fileMenu = menubar.addMenu('File')

        # 添加 Open 按钮
        openAction = QAction('Open', self)
        openAction.setShortcut('Ctrl+O')
        openAction.triggered.connect(self.openFile)

        fileMenu.addAction(openAction)

    def openFile(self):
        print('Open clicked')

添加 QTableWidget

我们使用 QTableWidget 实现一个表格来显示数据。

from PyQt5.QtWidgets import QMainWindow, QAction, QTableWidget, QTableWidgetItem

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        # 添加菜单栏
        menubar = self.menuBar()

        # 添加 File 栏
        fileMenu = menubar.addMenu('File')

        # 添加 Open 按钮
        openAction = QAction('Open', self)
        openAction.setShortcut('Ctrl+O')
        openAction.triggered.connect(self.openFile)

        fileMenu.addAction(openAction)

        # 添加 QTableWidget
        self.tableWidget = QTableWidget()
        self.setCentralWidget(self.tableWidget)

    def openFile(self):
        print('Open clicked')

显示数据

接下来,我们将在 QTableWidget 中显示数据。这需要几个简单的步骤:

  • 设置表头(列名)
  • 插入数据
# 显示数据
def showData(self):
    headers = ['Confirmed', 'Recovered', 'Critical', 'Deaths']
    self.tableWidget.setColumnCount(len(headers))
    self.tableWidget.setHorizontalHeaderLabels(headers)

    rowPosition = 0
    for item in self.data:
        self.tableWidget.insertRow(rowPosition)

        self.tableWidget.setItem(rowPosition, 0, QTableWidgetItem(str(item['confirmed'])))
        self.tableWidget.setItem(rowPosition, 1, QTableWidgetItem(str(item['recovered'])))
        self.tableWidget.setItem(rowPosition, 2, QTableWidgetItem(str(item['critical'])))
        self.tableWidget.setItem(rowPosition, 3, QTableWidgetItem(str(item['deaths'])))

        rowPosition += 1

这是如何将数据插入 QTableWidget。

步骤四:完整代码

现在,我们已经完成了所有必要的步骤,下面是完整的代码,可以直接运行。

import sys
import requests

from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QTableWidget, QTableWidgetItem

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        # 添加菜单栏
        menubar = self.menuBar()

        # 添加 File 栏
        fileMenu = menubar.addMenu('File')

        # 添加 Open 按钮
        openAction = QAction('Open', self)
        openAction.setShortcut('Ctrl+O')
        openAction.triggered.connect(self.openFile)

        fileMenu.addAction(openAction)

        # 添加 QTableWidget
        self.tableWidget = QTableWidget()
        self.setCentralWidget(self.tableWidget)

    # 获取数据
    def getData(self):
        url = "https://covid-19-data.p.rapidapi.com/totals"

        headers = {
            'x-rapidapi-host': "covid-19-data.p.rapidapi.com",
            'x-rapidapi-key': "YOUR_API_KEY"
        }

        response = requests.request("GET", url, headers=headers)

        self.data = response.json()

    # 显示数据
    def showData(self):
        headers = ['Confirmed', 'Recovered', 'Critical', 'Deaths']
        self.tableWidget.setColumnCount(len(headers))
        self.tableWidget.setHorizontalHeaderLabels(headers)

        rowPosition = 0
        for item in self.data:
            self.tableWidget.insertRow(rowPosition)

            self.tableWidget.setItem(rowPosition, 0, QTableWidgetItem(str(item['confirmed'])))
            self.tableWidget.setItem(rowPosition, 1, QTableWidgetItem(str(item['recovered'])))
            self.tableWidget.setItem(rowPosition, 2, QTableWidgetItem(str(item['critical'])))
            self.tableWidget.setItem(rowPosition, 3, QTableWidgetItem(str(item['deaths'])))

            rowPosition += 1

    def openFile(self):
        self.getData()
        self.showData()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec())
结论

在本文中,我们已经看到了如何使用 Python 和 PyQt5 库获取 Corona 病毒案例的详细信息。尽管本文给出的是在菜单栏中添加 QAction 和使用 QTableWidget 显示数据表格的示例,但是这些简单的示例还是可以用作更复杂的应用程序的基础的(例如,添加多个 QAction 和 QTableWidget)。总之,本文所讲的应该足以启发读者创建自己的 Corona 数据广告板或信息图表。