【Python】自制地球壁纸软件

news/2024/11/22 22:39:39/

关于如何获取并设置卫星地球壁纸请参考上一篇文章【Python】定时获取卫星地球图像作为电脑壁纸

本文主要讲解如何开发GUI界面并打包为exe程序发布。

开发环境:Python3
主要模块:PyQt5和pyinstaller
使用平台: win10

不多说,上代码:

import sys, os
if hasattr(sys, 'frozen'):os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
from earthWallper import *
from datetime import datetime
from PyQt5 import sipclass SetGUI(QMainWindow):def __init__(self):super().__init__()self.initUi()def initUi(self):#设置窗口居中显示self.resize(600,500)screenSize=QDesktopWidget().screenGeometry()self.move((screenSize.width()-500)/2,(screenSize.height()-500)/2)#设置图标以及标题self.setWindowTitle("地球壁纸")self.setWindowIcon(QIcon('planet_earth.ico'))#设置布局,添加buttonlayout = QHBoxLayout()runButton=self.getButton("运行程序",1)runButton.clicked.connect(self.runInfo)aboutButton=self.getButton("关于软件", 2)aboutButton.clicked.connect(self.aboutInfo)connectButton=self.getButton("联系作者", 3)connectButton.clicked.connect(self.connectInfo)layout.addWidget(runButton)layout.addWidget(aboutButton)layout.addWidget(connectButton)self.setLayout(layout)self.statusBar().showMessage('图像来源:日本himawari-8气象卫星官网,因此连接较慢,可能会出现未响应,请稍等')#主循环,显示self.show()def runInfo(self):status=imgDown()if status==False:QMessageBox.information(self, "获取失败", "下载图像失败,请稍后重试")return Falsepath=os.getcwd()status=setWallpper(path+"\\earth.png")if status:self.statusBar().showMessage('设置壁纸成功  时间: '+str(datetime.now()))else:QMessageBox.information(self,"运行错误","未知错误,请稍后重试,或者联系作者")def aboutInfo(self):QMessageBox.information(self,"软件说明","Version: 1.0\n\nAuthor: Foryatto\n\n本软件仅供学习交流,切勿用作非法用途!")def connectInfo(self):QMessageBox.information(self, "联系作者", "")#创建buttondef getButton(self, buttonName,th):button=QPushButton(buttonName,self)button.resize(button.sizeHint())button.move((600-button.width())//2,80*th)return buttonif __name__=='__main__':# 关闭所有窗口,也不关闭应用程序QApplication.setQuitOnLastWindowClosed(False)app=QApplication(sys.argv)window=SetGUI() #初始化程序#设置系统托盘tp = QSystemTrayIcon(window)tp.setIcon(QIcon('planet_earth.ico'))a1 = QAction('&打开窗口',triggered=window.show)a2 = QAction('&结束程序', triggered=qApp.quit)  # 直接退出可以用qApp.quittpMenu = QMenu()tpMenu.addAction(a1)tpMenu.addAction(a2)tp.setContextMenu(tpMenu)# 不调用show不会显示系统托盘tp.show()def act(reason):# 鼠标点击icon传递的信号会带有一个整形的值,1是表示单击右键,2是双击,3是单击左键,4是用鼠标中键点击if reason == 3 or reason == 2:window.show()tp.activated.connect(act)sys.exit(app.exec_())

上面代码用到的earthWallper模块参考上一篇文章。

效果图:
在这里插入图片描述
运行效果

打包成exe文件可能遇到的问题 (Failed to execute script ***):

解决方案参考:https://bbs.csdn.net/topics/392428917

在文件头添加以下代码:

import sys, os
if hasattr(sys, 'frozen'):os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']

http://www.ppmy.cn/news/335310.html

相关文章

python做壁纸_用Python做地球壁纸

本文主要讲解如何开发GUI界面并打包为exe程序发布。 开发环境:Python3 主要模块:PyQt5和pyinstaller 使用平台: win10 不多说,上代码: import sys, os if hasattr(sys, frozen): os.environ[PATH] sys._MEIPASS &quo…

免费的实时地球卫星图片壁纸Downlink for mac

卫星同步实景地球壁纸软件Downlink良心推荐。Downlink mac版可以全天观察阳光和天气在地球上的移动,从不同的地球视角中进行选择,从热带地区的近景到美国大陆,再到来自3个不同的地球同步卫星的绝对令人惊叹的全盘图像,多种地球壁纸…

已知一个整数,如何判断这个整数是无符号的?

前言 记录6月11日,肯哥在群里面分享的一个问题。说实话,看到题目想了半天没明白。一看答案,才发现,这题真的简单。 题目 已知一个整数,如何判断这个整数是无符号的? 题解 (1)因为我的…

hp6960无法连接计算机,支持多种打印方式 惠普OfficeJet Pro 6960评测

【PConline 专业评测】当办公打印设备起初用于我们日常办公文印时,激光打印产品是我们最早接触的一类设备。但随着科技的发展及用户的需求,打印市场也随之千变万化,激光打印产品已经不再是我们日常办公不可或缺的打印产品,追求质量…

flutter 开发ios升级到iOS13之后运行报错

android studio中跑Flutter项目,运行iOS13系统报错 2019-10-29 14:45:16.875 ios-deploy[38706:203108] [ !! ] Error 0xe800007f: Device doesnt support wireless sync. AMDeviceStartService(device, CFSTR("com.apple.debugserver"), &gdbfd, NU…

iTunesMobileDevice错误代码

1. 概述 从theiphonewiki中拷贝出来的,为了以后查找方便,放到这里。 2. 私有函数地址的获取 In order to obtain the address of a usable private function in MobileDevice, you will have to be able to understand x86-64 assembly to reverse en…

我对于华为悦盒(IPTV)盒子开机时卡广告图,进入IPTV桌面显示10071错误的解决经过

昨天家里的华为悦盒(IPTV)盒子在开机时卡广告图,进入桌面慢且无法连接电视直播节目经行播放。 在拔除网线,使用电视盒子连接WIFI时节目能正常的播放 因为之前有对该电视盒子进行ROOT的关系,考虑到是否是系统出现问题。…

链路聚合|静态,动态配置|华为,思科配置|聚盒~

目录 一.为什么要做链路聚合? 二.华为:Eth-Trunk (1)配置手动模式(静态) 1.基本配置 2.物理接口配置 3.配置ETH-Trunk的链路类型 4.查看Eth-Trunk12链路 5.在加入端口前必须…