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

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

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

#

# Created: Sat Jun 21 13:16:32 2014

#      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 = 'http://cn.bing.com'

#定义RSSURL

rssURL  = 'http://www.bing.com/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壁纸相关推荐

  1. linux 卸载kde桌面,Ubuntu下完全卸载KDE的方法

    推荐文章 用了nvm进行node版本的管理,还是很方便的,各个版本切换自由切换,但是nvm安装的node是在~/.nvm下的,和之前安装的不在一起,有点儿强迫症的我,就想把之前的给卸载了 homebr ...

  2. Linux无桌面环境下,实现USB的自动挂载/卸载

    Linux无桌面环境下,实现USB的自动挂载/卸载 1.gnome桌面环境如何实现USB的自动挂载 2.udev 3.单个设备自动挂载/卸载 4.usbmount工具实现自动挂载卸载 linux无桌面 ...

  3. linux刷新屏幕命令是什么,linux重启刷新桌面方法教程

    Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统.linux使用的时候发现桌面卡死了,我们可以不用重启电脑,重启桌面即可,想要重启桌面,该怎么重启呢?下面我们就来看看 ...

  4. 计算机桌面一直刷新,win7自动刷新桌面怎么办_win7一直自动刷新桌面的解决方法...

    很多用户使用win7 64位旗舰版系统的时候,都会经常对桌面进行刷新,来保持电脑的流畅性.但最近就有网友表示自己的电脑出现了自动刷新桌面的情况.很是烦恼不知道怎么办.那下面小编就来给大家分享win7一 ...

  5. php umount强制,linux中mount/umount命令的基本用法及开机自动挂载方法

    本文介绍了linux中mount/umount命令的基本用法及开机自动挂载,具体方法如下: mount命令格式如下: 格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有: -a ...

  6. linux mount 指定用户名,linux中mount/umount命令的基本用法及开机自动挂载方法

    本文介绍了linux中mount/umount命令的基本用法及开机自动挂载,具体方法如下: mount命令格式如下: 格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有: -a ...

  7. Ubuntu下如何退出python的命令模式>>>

    Ubuntu下如何退出python的命令模式>>>,可以使用命令exit();或qiut();退出,也可以按住Ctrl+D键退出 可提供远程搭建运行服务 不会调试运行的同学,你只需打 ...

  8. linux pureftp mysql_在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp

    在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp 一.安装Ubuntu7.04 Desktop版 二.ubuntu Linux下手工安装mysql5 1.下载mysq ...

  9. linux常见问题解决方法,Ubuntu 下2个常见问题解决方法

    这里为总结下,自己最近遇到的Ubuntu 下2个问题,并附有解决方法: #1,网络连接"设备未托管" 如果遇到该问题,系统开机后无法自动动态获取IP 地址, 方法一:可每次开机手动 ...

最新文章

  1. Linux操作系统(二:shell脚本)
  2. apache 服务器概述--安装(一)
  3. ML之Clustering之普聚类算法:普聚类算法的相关论文、主要思路、关键步骤、代码实现等相关配图之详细攻略
  4. 遇到个鬼,在WIN08的DELL R710上安装CENTOS 63,无法格式化以前的硬盘分区,安装无法进行下去。...
  5. 自定义查询语句SpringData
  6. 26_多线程_第26天(Thread、线程创建、线程池)_讲义
  7. 数据科学家应该学习JavaScript吗?
  8. 调用另一个cpp的变量_Il2Cpp Internals: 托管调用栈
  9. 只用一个WiFi,渗透进企业全部内网
  10. JavaScript——创建运动框架
  11. 关闭openssh服务_关于redhat7的openssh漏洞升级修复方法
  12. Kafka Streams简介: 让流处理变得更简单
  13. Visio 画图去掉页边距(图形四周的空白区域)的解决办法
  14. [leetcode] 554. 砖墙
  15. yum安装php解析,详解Centos下YUM安装PHP的两种方式
  16. dns服务器响应 异常,DNS云学堂|快速定位DNS解析异常问题,牢记这四种DNS状态码...
  17. 2021年新年元旦,新年开篇两首毛泽东诗词——沁园春:恰同学少年,风华正茂。书生意气,挥斥方遒……...
  18. 合并石头的最低成本问题
  19. win7计算机网络连接,笔记本win7无线网络红叉电脑网络连接不可用的解决方法
  20. python中 utf-8 和GBK 的关系

热门文章

  1. 微信开发者工具网络连接失败问题解决方法
  2. 定制linux版本,定制属于自己的Linux操作系统
  3. spring 事务提交成功后,再去发送事件
  4. 跨时钟域同步-结绳法
  5. 从零开始的DIY智能家居 - 基于 ESP32 的土壤湿度传感器
  6. AF1210深信服网关配置
  7. JS、JNS、JP(JPE)、JNP(JPO)指令详解、从原理上解释
  8. 洛谷2336 BZOJ2754 SCOI2012 喵星球上的点名 SA 莫队 二分
  9. 哥德巴赫猜想验证-循环
  10. Docker常用软件安装之Redis