Python做個自定義動態(tài)壁紙還可以放視頻_第1頁
Python做個自定義動態(tài)壁紙還可以放視頻_第2頁
Python做個自定義動態(tài)壁紙還可以放視頻_第3頁
Python做個自定義動態(tài)壁紙還可以放視頻_第4頁
Python做個自定義動態(tài)壁紙還可以放視頻_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第Python做個自定義動態(tài)壁紙還可以放視頻目錄前言一、核心功能設(shè)計二、實(shí)現(xiàn)步驟1.UI排版布局設(shè)計2.視頻加載預(yù)覽3.動態(tài)壁紙功能實(shí)現(xiàn)4.關(guān)閉動態(tài)壁紙

前言

前段時間,用PyQt5寫了幾篇文章,自己用python做的一款超炫酷音樂播放器、用Python做個個性的動畫掛件讓桌面不單調(diào)、詳細(xì)過程帶你用Python做車牌自動識別系統(tǒng)。今天就繼續(xù)給大家分享一個實(shí)戰(zhàn)案例,帶大家一起用Python的PyQt5開發(fā)一個自定義動態(tài)桌面壁紙,好玩又有趣!

首先一起來看看最終實(shí)現(xiàn)的自定義動態(tài)壁紙效果:

面,我們開始介紹這個自定義動態(tài)桌面的制作過程。

一、核心功能設(shè)計

總體來說,我們需要實(shí)現(xiàn)將自己喜歡的視頻轉(zhuǎn)成一個動態(tài)桌面,知識點(diǎn)主要包含了對視頻提取解析,視頻輪播,PyQt5窗體設(shè)置,桌面句柄獲取,自定義動態(tài)桌面壁紙實(shí)現(xiàn)等。

拆解需求,大致可以整理出我們需要分為以下幾步完成:

UI排版布局設(shè)計,確認(rèn)動態(tài)壁紙功能設(shè)計

加載視頻,對視頻進(jìn)行預(yù)覽讀取,保存視頻路徑等

動態(tài)壁紙功能實(shí)現(xiàn)應(yīng)用,獲取桌面句柄,輪播加載視頻

關(guān)閉動態(tài)壁紙,在線壁紙資源獲取等

二、實(shí)現(xiàn)步驟

之前有粉絲反饋說,想自己跟著文章自己敲敲代碼,但是不知道具體需要哪些模塊、包文件,后面我就把所有用到模塊先放出來。

importos

importsys

fromsubprocessimportcall

fromthreadingimportThread

fromtimeimportsleep

importcv2

fromPyQt5importQtCore,QtWidgets

fromPyQt5.QtCoreimportQt,QTimer

fromPyQt5.QtGuiimportQImage,QPixmap,QIcon

fromPyQt5.QtWidgetsimportQGridLayout,QPushButton,QMainWindow,QFileDialog,QLabel,QSystemTrayIcon,\

QAction,QMenu,QMessageBox

fromosimportpathaspathq

1.UI排版布局設(shè)計

根據(jù)動態(tài)壁紙所需要的功能,首先進(jìn)行UI布局設(shè)計,我們這次還是使用的pyqt5。主要包含了加載讀取本地視頻、視頻加載預(yù)覽、動態(tài)壁紙應(yīng)用、動態(tài)壁紙關(guān)閉等。核心設(shè)計代碼如下:

#author:CSDN-Dragon少年

defsetupUi(self,MainWindow):

MainWindow.setObjectName("MainWindow")

MainWindow.resize(505,615)

MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly)

self.centralwidget=QtWidgets.QWidget(MainWindow)

self.centralwidget.setObjectName("centralwidget")

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

self.pushButton.setGeometry(QtCore.QRect(22,10,89,31))

self.pushButton.setObjectName("pushButton")

self.pushButton.clicked.connect(self.openmp4)

self.pushButton.setStyleSheet(

'''QPushButton{background:#F7D674;border-radius:5px;}QPushButton:hover{background:yellow;}''')

self.groupBox=QtWidgets.QGroupBox(self.centralwidget)

self.groupBox.setGeometry(QtCore.QRect(22,50,452,351))

self.groupBox.setObjectName("groupBox")

self.widget=QtWidgets.QWidget(self.groupBox)

self.widget.setGeometry(QtCore.QRect(11,20,430,291))

self.widget.setObjectName("widget")

self.gridLayout_3=QtWidgets.QGridLayout(self.widget)

self.gridLayout_3.setObjectName("gridLayout_3")

self.label=QLabel(self)

self.label.resize(400,300)

self.label.setText("Waitingforvideo...")

self.gridLayout_3.addWidget(self.label)

self.close_widget=QtWidgets.QWidget(self.centralwidget)

self.close_widget.setGeometry(QtCore.QRect(420,0,93,41))

self.close_widget.setObjectName("close_widget")

self.close_layout=QGridLayout()#創(chuàng)建左側(cè)部件的網(wǎng)格布局層

self.close_widget.setLayout(self.close_layout)#設(shè)置左側(cè)部件布局為網(wǎng)格

self.left_close=QPushButton("")#關(guān)閉按鈕

self.left_close.clicked.connect(self.close)

self.left_visit=QPushButton("")#空白按鈕

#self.left_visit.clicked.connect(MainWindow.big)

self.left_mini=QPushButton("")#最小化按鈕

self.left_mini.clicked.connect(MainWindow.mini)

self.close_layout.addWidget(self.left_mini,0,0,1,1)

self.close_layout.addWidget(self.left_close,0,2,1,1)

self.close_layout.addWidget(self.left_visit,0,1,1,1)

self.left_close.setFixedSize(15,15)#設(shè)置關(guān)閉按鈕的大小

self.left_visit.setFixedSize(15,15)#設(shè)置按鈕大小

self.left_mini.setFixedSize(15,15)#設(shè)置最小化按鈕大小

self.left_close.setStyleSheet(

'''QPushButton{background:#F76677;border-radius:5px;}QPushButton:hover{background:red;}''')

self.left_visit.setStyleSheet(

'''QPushButton{background:#F7D674;border-radius:5px;}QPushButton:hover{background:yellow;}''')

self.left_mini.setStyleSheet(

'''QPushButton{background:#6DDF6D;border-radius:5px;}QPushButton:hover{background:green;}''')

self.horizontalLayout=QtWidgets.QHBoxLayout(self.close_widget)

self.horizontalLayout.setContentsMargins(0,0,0,0)

self.horizontalLayout.setObjectName("horizontalLayout")

self.pushButton_2=QtWidgets.QPushButton(self.centralwidget)

self.pushButton_2.setGeometry(QtCore.QRect(77,440,133,41))

self.pushButton_2.setObjectName("pushButton_2")

self.pushButton_2.clicked.connect(self.play)

self.pushButton_2.setStyleSheet(

'''QPushButton{background:#6DDF6D;border-radius:5px;}QPushButton:hover{background:green;}''')

self.pushButton_3=QtWidgets.QPushButton(self.centralwidget)

self.pushButton_3.setGeometry(QtCore.QRect(308,440,111,41))

self.pushButton_3.setObjectName("pushButton_3")

self.pushButton_3.clicked.connect(self.close_wall)

self.pushButton_3.setStyleSheet(

'''QPushButton{background:#F76677;border-radius:5px;}QPushButton:hover{background:red;}''')

self.pushButton_4=QtWidgets.QPushButton(self.centralwidget)

self.pushButton_4.setGeometry(QtCore.QRect(187,540,133,21))

self.pushButton_4.setObjectName("pushButton_4")

self.pushButton_4.clicked.connect(self.openurl)

self.pushButton_4.setStyleSheet(

'''QPushButton{background:#222225;color:white;border-radius:5px;}QPushButton:hover{background:#222225;color:skyblue}''')

MainWindow.setCentralWidget(self.centralwidget)

self.menubar=QtWidgets.QMenuBar(MainWindow)

self.menubar.setGeometry(QtCore.QRect(0,0,505,23))

self.menubar.setObjectName("menubar")

MainWindow.setMenuBar(self.menubar)

self.statusbar=QtWidgets.QStatusBar(MainWindow)

self.statusbar.setObjectName("statusbar")

MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)

QtCore.QMetaObject.connectSlotsByName(MainWindow)

self.groupBox.setStyleSheet('''

color:white

''')

MainWindow.setWindowOpacity(0.95)#設(shè)置窗口透明度

MainWindow.setAttribute(Qt.WA_TranslucentBackground)

MainWindow.setWindowFlag(Qt.FramelessWindowHint)#隱藏邊框

#author:Dragon少年

defretranslateUi(self,MainWindow):

_translate=QtCore.QCoreApplication.translate

MainWindow.setWindowTitle(_translate("MainWindow","MainWindow"))

self.pushButton.setText(_translate("MainWindow","從本地選擇"))

self.groupBox.setTitle(_translate("MainWindow","預(yù)覽"))

self.pushButton_2.setText(_translate("MainWindow","應(yīng)用"))

self.pushButton_3.setText(_translate("MainWindow","關(guān)閉壁紙"))

self.pushButton_4.setText(_translate("MainWindow","在線資源"))

UI實(shí)現(xiàn)效果如下:

UI布局設(shè)計完成,下面我們開始進(jìn)行視頻讀取加載、預(yù)覽功能實(shí)現(xiàn)。

2.視頻加載預(yù)覽

接來下我們可以根據(jù)自己喜歡的視頻,從本地讀取視頻,并且將視頻預(yù)覽播放顯示。這里視頻演示,博主還是用之前的那篇紫顏小姐姐的跳舞視頻進(jìn)行演示。

讀取視頻:

讀取視頻我們可以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論