Python做個自定義動態壁紙還可以放視頻_第1頁
Python做個自定義動態壁紙還可以放視頻_第2頁
Python做個自定義動態壁紙還可以放視頻_第3頁
Python做個自定義動態壁紙還可以放視頻_第4頁
Python做個自定義動態壁紙還可以放視頻_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第Python做個自定義動態壁紙還可以放視頻目錄前言一、核心功能設計二、實現步驟1.UI排版布局設計2.視頻加載預覽3.動態壁紙功能實現4.關閉動態壁紙

前言

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

首先一起來看看最終實現的自定義動態壁紙效果:

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

一、核心功能設計

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

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

UI排版布局設計,確認動態壁紙功能設計

加載視頻,對視頻進行預覽讀取,保存視頻路徑等

動態壁紙功能實現應用,獲取桌面句柄,輪播加載視頻

關閉動態壁紙,在線壁紙資源獲取等

二、實現步驟

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

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排版布局設計

根據動態壁紙所需要的功能,首先進行UI布局設計,我們這次還是使用的pyqt5。主要包含了加載讀取本地視頻、視頻加載預覽、動態壁紙應用、動態壁紙關閉等。核心設計代碼如下:

#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()#創建左側部件的網格布局層

self.close_widget.setLayout(self.close_layout)#設置左側部件布局為網格

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

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)#設置關閉按鈕的大小

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

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

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)#設置窗口透明度

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","預覽"))

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

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

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

UI實現效果如下:

UI布局設計完成,下面我們開始進行視頻讀取加載、預覽功能實現。

2.視頻加載預覽

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

讀取視頻:

讀取視頻我們可以

溫馨提示

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

評論

0/150

提交評論