用wxPython创建GUI应用程序展示NASA图片(第一部分)

2019 年 5 月 8 日 Python程序员

在成长过程中,我时常认为探索宇宙空间是一件令人兴奋的事情,幻想那些未知的事物是相当有趣的。我也喜欢浏览异世界的照片或者探讨广袤的空间。可是这些和Python有什么关系呢?当然有关啦,美国国家航空航天局(NASA)提供了一套基于web的API,可以用于查询他们的图像库。

您可以在他们的网站阅读相关信息。

NASA官网建议先获取API密钥。当访问网站时,需要填写一个简短的表格。

从技术层面上来说,您无需API密钥即可请求NASA服务。然而,对于免密钥的访问,存在速率限制的问题。当然,即使使用密钥进行访问,也会存在每小时至多1000次请求的默认上限值。如果超过限制,将暂时阻止发送请求。可以联系NASA提高上限值。

有趣的是,文档并未说明免密钥情况下的请求次数上限。

关于域名访问方面,NASA的图像API文档和普通API文档之间存在出入,导致使用时令人困惑。

比如,普通API文档上的URL如下:

  • https://api.nasa.gov/planetary/apod?api_key=API_KEY_GOES_HERE

但是,图像API文档给出的URL有所不同:

  • https://images-api.nasa.gov

对于本教程而言,将采用后者。


NASA API的使用

当开始使用不太熟悉的API时,最好先阅读其官方文档。另外可以在网上搜索是否存在基于该API的Python包。不过似乎没有NASA库的Python版本,所以需要自己实现。

开始使用前,请阅读NASA的图像API文档

这个文档不是很长,无需花费大量时间阅读,所以请尽量浏览一遍。

接下来将尝试使用该API。

如下是访问API的部分代码:


如果在调试器中运行此代码,则可以打印返回的JSON。

如下是返回的部分内容:

 

既然已经了解了JSON的格式,可以尝试解析它。

可以在Python脚本中加入如下代码:


由此可以获取JSON的第一个项。然后可以解析出nasa_id,用于获取与此特定结果关联的所有图像。接下来可以将nasa_id添加到新URL并发出请求。

请求结果如下:


Python代码的最后两行用于从JSON中提取URL。至此我们获取了需要展示的全部数据。

用户界面的设计

您可以通过多种不同的方式设计图像下载应用程序。其中原型模式是最简单且快速的。它的优势在于在实现所有基本需求的基础上,可以结合自己掌握的知识增强原型或者进行创新。

如下是一个尝试创建的模型:

 

如您所见,应用程序需要具有如下功能:

  • 搜索栏

  • 保存搜索结果的部件

  • 选择某个结果时的图像显示方式

  • 图像下载功能

接下来让我们一起学习如何创建这个用户界面吧!

英文原文:https://www.blog.pythonlibrary.org/2019/04/18/creating-a-gui-application-for-nasas-api-with-wxpython/ 
译者:我是昵称耶~
登录查看更多
1

相关内容

【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
190+阅读 · 2020年6月29日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
257+阅读 · 2020年6月10日
Python地理数据处理,362页pdf,Geoprocessing with Python
专知会员服务
110+阅读 · 2020年5月24日
Python导论,476页pdf,现代Python计算
专知会员服务
254+阅读 · 2020年5月17日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
107+阅读 · 2020年5月9日
【数字孪生】数字孪生技术从概念到应用
产业智能官
86+阅读 · 2020年2月16日
如何使用自然语言工具包(NLTK)在Python3中执行情感分析
Python程序员
18+阅读 · 2019年10月28日
7 款实用到哭的App,只说一遍
高效率工具搜罗
84+阅读 · 2019年4月30日
GitHub 热门:各大网站的 Python 爬虫登录汇总
机器学习算法与Python学习
9+阅读 · 2019年3月20日
文本分析与可视化
Python程序员
8+阅读 · 2019年2月28日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
教程帖:用TensorFlow自制Taylor Swift识别器
论智
13+阅读 · 2018年1月17日
用python和Tesseract实现光学字符识别(OCR)
Python程序员
7+阅读 · 2017年7月18日
Arxiv
24+阅读 · 2020年3月11日
Real-time Scalable Dense Surfel Mapping
Arxiv
5+阅读 · 2019年9月10日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
3+阅读 · 2018年4月10日
Arxiv
4+阅读 · 2018年2月13日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
190+阅读 · 2020年6月29日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
257+阅读 · 2020年6月10日
Python地理数据处理,362页pdf,Geoprocessing with Python
专知会员服务
110+阅读 · 2020年5月24日
Python导论,476页pdf,现代Python计算
专知会员服务
254+阅读 · 2020年5月17日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
107+阅读 · 2020年5月9日
相关资讯
【数字孪生】数字孪生技术从概念到应用
产业智能官
86+阅读 · 2020年2月16日
如何使用自然语言工具包(NLTK)在Python3中执行情感分析
Python程序员
18+阅读 · 2019年10月28日
7 款实用到哭的App,只说一遍
高效率工具搜罗
84+阅读 · 2019年4月30日
GitHub 热门:各大网站的 Python 爬虫登录汇总
机器学习算法与Python学习
9+阅读 · 2019年3月20日
文本分析与可视化
Python程序员
8+阅读 · 2019年2月28日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
教程帖:用TensorFlow自制Taylor Swift识别器
论智
13+阅读 · 2018年1月17日
用python和Tesseract实现光学字符识别(OCR)
Python程序员
7+阅读 · 2017年7月18日
Top
微信扫码咨询专知VIP会员