📅  最后修改于: 2023-12-03 14:57:12.414000             🧑  作者: Mango
本文将介绍如何使用 Python 和 PyQt5 库来获取 Corona 病毒案例的详细信息。我们将通过创建一个简单的 GUI 应用程序来演示如何获取数据并将其显示在应用程序中。
先看一下最终的程序演示效果:
如上图所示,我们的应用程序会展示全球 Corona 案例的详细信息。可见,本程序通过 PyQt5 库实现了一些基本操作,如在菜单栏添加 QAction、使用 QTableWidget 显示数据表格等。现在,我们来看一下如何实现这个功能。
我们需要安装以下库来完成这个任务:
pip install PyQt5
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
中。
为了确保我们的应用程序具有良好的用户界面,我们将使用 PyQt5 库来创建它。我们可能需要创建一个菜单栏和一个表格,用于显示数据。
我们将在菜单栏中添加 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 实现一个表格来显示数据。
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 数据广告板或信息图表。