导语

今天刷抖音刷到了一组特别好看的星云宇宙:星星眼.jpg。

​​

我们与那些遥远的星系息息相关

无论它们是如何与我们天各一方

那些经过数十亿年旅行到达地球的光线

终究会把我们联系在一起!后面自己查询了一些宇宙星云不同的照片等等,真的超美~

​​

想知道你生日那天,哈勃空间望远镜观察到的宇宙是什么样的吗?

​“你生日那天的宇宙”听起来非常神秘而浪漫,今天小编自己动手丰衣足食带大家做一款随时可以查询自己生日那天的宇宙星云的小软件~

正文

环境安装部分:Python版本:3.6  相关模块:PyQt5模块;requests模块;lxml模块;openpyxl模块;

pillow模块;以及一些Python自带的模块。

首先,我们可以在官网下载到一个excel表格,表格里记录了每个日期哈勃望远镜拍到的宇宙对应的介绍页链接。

(1)定义组件:按钮,日期、布局等。

 # 定义组件# --labelself.month_label = QLabel('出生月:')self.day_label = QLabel('出生日:')self.show_label = QLabel()self.show_label.setScaledContents(True)self.show_label.setMaximumSize(400, 300)self.showLabelImage(Image.open('resources/icon/icon.jpg'))# --显示介绍文字的textself.text_result = QTextEdit()# --日期选择下拉框self.month_combobox = QComboBox()for item in range(1, 13):self.month_combobox.addItem(str(item).zfill(2))self.day_combobox = QComboBox()for item in range(1, 32):self.day_combobox.addItem(str(item).zfill(2))# --按钮self.query_button = QPushButton()self.query_button.setText('查询')self.save_button = QPushButton()self.save_button.setText('保存')# 布局self.grid = QGridLayout()self.grid.setSpacing(12)self.grid.addWidget(self.show_label, 0, 0, 10, 10)self.grid.addWidget(self.text_result, 0, 10, 10, 10)self.grid.addWidget(self.month_label, 10, 0, 1, 1)self.grid.addWidget(self.month_combobox, 10, 1, 1, 1)self.grid.addWidget(self.day_label, 10, 2, 1, 1)self.grid.addWidget(self.day_combobox, 10, 3, 1, 1)self.grid.addWidget(self.query_button, 10, 10, 1, 1)self.grid.addWidget(self.save_button, 10, 11, 1, 1)self.setLayout(self.grid)# 事件绑定self.query_button.clicked.connect(lambda _: threading.Thread(target=self.query).start())self.save_button.clicked.connect(self.save)self.update_signal.connect(self.update)# 一些必要的变量self.is_querying = Falseself.full_year_data = self.loadFullYearData('resources/hubble-birthdays-full-year.xlsx')self.data_for_save = None

(2)读取这个excel表格:

'''导入excel中的全年数据'''
def loadFullYearData(self, filepath):full_year_data = {}excel_data = load_workbook(filepath)sheet = excel_data.get_sheet_by_name('365')for idx, row in enumerate(sheet.rows):if idx > 366: breakif idx > 0: full_year_data[row[0].value.strftime('%Y-%m-%d')[5:]] = row[4].valuereturn full_year_data

(3)然后根据用户输入的日期来获得对应的介绍页链接就好啦:

url = self.full_year_data.get(key)

(4)保存结果:

'''保存查询结果'''def save(self):if self.data_for_save:if not os.path.exists(self.data_for_save.get('date')):os.mkdir(self.data_for_save.get('date'))imagepath = os.path.join(self.data_for_save.get('date'), 'hubblesee.%s' % self.data_for_save.get('ext'))self.data_for_save.get('image').save(imagepath)intro = '\n\n'.join(self.data_for_save.get('intro'))f = open(os.path.join(self.data_for_save.get('date'), 'intro.txt'), 'w', encoding='utf-8')f.write(intro)f.close()self.data_for_save = None

效果图:

​总结

【宇宙编码】厉害,生日那天:程序员小哥把天上的宇宙星云都送给女神了~相关推荐

  1. 拒收苹果超10万元赏金!程序员小哥找出iCloud账户漏洞后,发文直指苹果不够公开透明...

    明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 好不容易找出iCloud账户漏洞,但他竟然拒收苹果1.8万美元奖金! 最近,这件事在Hacker News上引起大批网友围观. 本来程序员找 ...

  2. 看程序员小哥如何机智应对电信诈骗

    不知道大家,有没有收到诈骗短信的经历哈~ 拒不完全统计,自娜姐有手机以来,累计中奖63次,奖金共计1260万元(人民币),另有苹果手机39部,电脑9台,轿车17辆 ,收到法院传票38张,被大学录取27 ...

  3. 程序员小哥月入5万,却被丈母娘拒绝,丈母娘一番话让小哥很尴尬

    在如今的职场上,很多人会以工资的高低来评判一个人混的好不好,职场上有这样一个职业,虽然说他们的工资拿的比较高,但是很多人对这个职业并不是很看好,那就是程序员.大家认为他们能赚到这么多的钱,都是透支了自 ...

  4. URL 地址栏能玩出什么新花样?这位歪果程序员小哥给你开开脑洞!

    前言 在现在一些互联网营销号的传播素材中,程序员往往会被塑造成一个邋遢.木讷.秃头.低情商的形象,以借此博得普通群众的眼球,吸引他人注意力. 前阵子,暴走漫画发布的一个视频<创造1024> ...

  5. 程序员口中的demo是什么意思_URL 地址栏能玩出什么新花样?这位歪果程序员小哥给你开开脑洞!...

    前言 在现在一些互联网营销号的传播素材中,程序员往往会被塑造成一个邋遢.木讷.秃头.低情商的形象,以借此博得普通群众的眼球,吸引他人注意力. 前阵子,暴走漫画发布的一个视频<创造1024> ...

  6. GitHub火热!程序员小哥不得不知的所有定律法则(附项目链接)

    来源:机器之心 本文约3000字,建议阅读5分钟. 本文介绍了最近 GitHub 上很火的"定律合集"项目. 当谈到开发问题时,人们总会谈论各种定律.但对于大多数人来说,总有一些是 ...

  7. GitHub最热!程序员小哥不得不知的所有定律法则(附项目链接)

    来源:机器之心 本文约3000字,建议阅读5分钟. 本文介绍了最近 GitHub 上很火的"定律合集"项目. 当谈到开发问题时,人们总会谈论各种定律.但对于大多数人来说,总有一些是 ...

  8. 程序员小哥为赢过老婆打造自动瞄准弓,闭眼也能百发百中

    丰色 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 油管上一位小哥最近有个烦恼:老婆射箭技术太好,我很菜又想赢怎么办? 苦练6个月.6年?No No No,不如花时间做一个自动瞄准的弓箭 ...

  9. 云话题 | 你女朋友在买买买时,程序员小哥在干嘛?

    简介:年货节来了,你女朋友下单了吗?观看直播已经成为人们日常上网的习惯之一,直播购物作为其中的重要项目,销售额屡创新高.最近,天猫年货节刚刚开幕,淘宝直播中就涌入了不少的用户前来抢购,毕竟足不出户就可 ...

最新文章

  1. apn java_android设置移动联通电信wap接入点
  2. 【Three.js】关于Three.js的辅助库ststs.js报错的解决方案
  3. linux curl 命令 http请求、下载文件、ftp上传下载
  4. kafka Windows安装
  5. 艾伟_转载:ASP.NET模板引擎技术
  6. 01-UIContainerView纯代码实现及原理介绍
  7. Emlog5.31后台登录页面自适应源码
  8. linux 内核定时器精度_高精度时钟工作机制简介
  9. 提高HTML5 canvas性能的几种方法
  10. 医院大数据中心建设要点分析
  11. Laravel自学第一课:laravel下载与安装
  12. axure 7.0 注册码
  13. 电脑实用技巧:给大家推荐5种低成本笔记本散热方式
  14. TFT-LCD液晶显示器的工作原理
  15. C语言学习日记(2)——写个Hello,World测试一下
  16. 【硬件之AD篇】两层PCB的各个板层分析
  17. 编程随想(编程学什么语言好)
  18. python 对角阵_python-Numpy分区对角矩阵
  19. 【威联通 NAS QNAP】学习篇
  20. 从菜鸟教程网站(www.runoob.com)抓取所有教程

热门文章

  1. base64编码 vba_vb图片转base64编码
  2. Dynamics 365 CRM证书更换
  3. shell exec命令
  4. 上海科技大学计算机本科2020,上海科技大学2020年本科招生简章
  5. 将要到来的三大技术革命与联系
  6. 打印机显示另一台计算机正在使用,惠普打印机显示“由于另一个程序或另一台计算机正在使用联网的HP成像设备因此无法执行”怎么办?...
  7. Mogafx日元展望
  8. Win10下安装学习、开发可用的mysql
  9. 正定矩阵的定义与性质
  10. 柔性印刷电路板(PCB)的设计方法、类型等详细解析