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

导语

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

​​

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

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

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

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

​​

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

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

图片

正文

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

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

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

图片

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

 # 定义组件
        # --label
        self.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'))
        # --显示介绍文字的text
        self.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 = False
        self.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: break
        if idx > 0: full_year_data[row[0].value.strftime('%Y-%m-%d')[5:]] = row[4].value
    return 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
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾木子吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值