失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > linux自动刷新桌面 Ubuntu下实现用Python开机自动更新壁纸为bing壁纸

linux自动刷新桌面 Ubuntu下实现用Python开机自动更新壁纸为bing壁纸

时间:2020-10-24 05:13:52

相关推荐

linux自动刷新桌面 Ubuntu下实现用Python开机自动更新壁纸为bing壁纸

因为用的Windows Phone的手机,里面有一个手机锁屏每天自动更新为bing的壁纸,用着挺好的,遂想在Ubuntu下实现这个功能,断断续续折腾了一两个星期,惭愧。不过好在最终还是将所有的功能实现了。主要的功能有开机自动更新,以及手动刷新。图片会自动下载到用户的图片目录下面。

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'backGroundC.ui'

#

# Created: Sat Jun 21 13:16:32

# by: PyQt4 UI code generator 4.10.4

#

# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

import urllib

import os

import getpass

from xml.etree import ElementTree as ET

try:

_fromUtf8 = QtCore.QString.fromUtf8

except AttributeError:

def _fromUtf8(s):

return s

try:

_encoding = QtGui.QApplication.UnicodeUTF8

def _translate(context, text, disambig):

return QtGui.QApplication.translate(context, text, disambig, _encoding)

except AttributeError:

def _translate(context, text, disambig):

return QtGui.QApplication.translate(context, text, disambig)

#定义主URL

bingURL = ''

#定义RSSURL

rssURL = '/HPImageArchive.aspx?format=xml&idx=0&n=8'

#定义图片地址URL

imageURL = ''

'''

通过BING的RSS得到DOM对象,获取节点

后拼接IMAGE路径保存到本地然后调用

Terminal执行设定BACKGROUND的命令

'''

def updateBack():

#获取RSS源

root = ET.fromstring( urllib.urlopen( rssURL ).read( ) )

#查到最新的一张BING壁纸URL

img = root.getiterator ('image')[0].find('url').text

#获取用户名,用来拼接图片路径

user_name = getpass.getuser()

#获取图片编号用来当作本地图片的名称

name = root.getiterator ('image')[0].find('fullstartdate').text

#拼接图片

imageURL = bingURL + img

#下载图片

urllib.urlretrieve(imageURL, r'/home/%s/图片/%s.jpg'%( user_name, name))

#设置背景

os.system('gsettings set org.gnome.desktop.background picture-uri "file:///home/qing/图片/%s.jpg"' % ( name ) )

class Ui_MainWindow(QtGui.QMainWindow):

def setupUi(self, MainWindow):

try:

#测试是否是开机启动,是的话直接更新背景完成后退出程序

sys.argv[1]

updateBack()

sys.exit()

except Exception, e:

#否则判定为手动启动

MainWindow.setObjectName(_fromUtf8("MainWindow"))

MainWindow.resize(297, 130)

self.centralwidget = QtGui.QWidget(MainWindow)

self.centralwidget.setObjectName(_fromUtf8("centralwidget"))

self.pushButton = QtGui.QPushButton(self.centralwidget)

self.pushButton.setGeometry(QtCore.QRect(10, 10, 281, 41))

self.pushButton.setContextMenuPolicy(QtCore.Qt.NoContextMenu)

self.pushButton.setObjectName(_fromUtf8("pushButton"))

self.pushButton2= QtGui.QPushButton(self.centralwidget)

self.pushButton2.setGeometry(QtCore.QRect(10, 60, 281, 41))

self.pushButton2.setContextMenuPolicy(QtCore.Qt.NoContextMenu)

self.pushButton2.setObjectName(_fromUtf8("pushButton2"))

MainWindow.setCentralWidget(self.centralwidget)

self.statusbar = QtGui.QStatusBar(MainWindow)

self.statusbar.setObjectName(_fromUtf8("statusbar"))

MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)

QtCore.QMetaObject.connectSlotsByName(MainWindow)

#链接点击事件

self.connect( self.pushButton, QtCore.SIGNAL( 'clicked()' ), self.OnButtonFrush )

self.connect( self.pushButton2, QtCore.SIGNAL( 'clicked()' ), self.OnButtonAutoFrush )

#点击自动更新按钮事件

def OnButtonAutoFrush( self ):

try:

#创建desktop文件放在启动文件夹下

file = open("/home/%s/.config/autostart/autobing.desktop" % (getpass.getuser()) , 'w')

desktop = """[Desktop Entry]

Version=1.0

Encoding=UTF-8

Name=AutoBing

Type=Application

Exec=python "%s/%s" one

Terminal=false

Comment=auto change systembackground from bingimage

NoDisplay=false

Categories=Utility; """ % (os.getcwd() , os.path.basename(__file__))

file.write(desktop)

file.close()

QtGui.QMessageBox.information( self, u'提示', u'自动更新设置成功\n如果移动了程序路径请重新设置')

except Exception, e:

QtGui.QMessageBox.information( self, u'提示', u'''设置自动更新失败''')

raise e

#点击刷新桌面壁纸

def OnButtonFrush(self):

try:

updateBack()

QtGui.QMessageBox.information( self, u'提示', u'''BING壁纸更新成功''')

pass

except Exception, e:

QtGui.QMessageBox.information( self, u'提示', u'''更新失败''')

raise

def retranslateUi(self, MainWindow):

MainWindow.setWindowTitle(_translate("MainWindow", "BING壁纸自动更换", None))

self.pushButton.setText(_translate("MainWindow", "手动刷新", 'pushButton'))

self.pushButton2.setText(_translate("MainWindow", "登陆自动刷新", 'pushButton2'))

class BingWindow(QtGui.QMainWindow):

#初始化界面

def __init__(self,parent=None):

QtGui.QWidget.__init__(self,parent)

self.madWindow()

def madWindow(self):

self.ui = Ui_MainWindow()

self.ui.setupUi(self)

import sys

app = QtGui.QApplication(sys.argv)

myqq = BingWindow()

myqq.show()

sys.exit(app.exec_())

如果觉得《linux自动刷新桌面 Ubuntu下实现用Python开机自动更新壁纸为bing壁纸》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。