gpt4 book ai didi

python - 在PyQt5中关闭/打开vlc播放器后如何使用QWinThumbnailToolBar恢复任务栏缩略图

转载 作者:行者123 更新时间:2023-12-03 20:47:06 25 4
gpt4 key购买 nike

我在 pyqt5 中嵌入了 python vlc 来制作视频播放器。但我有一个问题是当视频开始播放时,它需要整个任务栏缩略图只显示它的视频,而不是窗口屏幕中存在的其他项目。关闭视频后任务栏变成完全空白的白色,不显示任何内容。这是图片示例。
1-播放前
enter image description here
2.播放时(看没有按钮)
enter image description here
3.停止后enter image description here
我正在尝试恢复

QWinThumbnailToolBar in self.videoframe.showEvent()
这是我的完整代码:
import sys
from PyQt5.QtWidgets import *
from PyQt5 import QtWinExtras
import vlc

class Player(QMainWindow):
"""A simple Media Player using VLC and Qt
"""
def __init__(self, master=None):
QMainWindow.__init__(self, master)
self.setWindowTitle("Media Player")
self.mainframe=QFrame(self)
self.setCentralWidget(self.mainframe)
self.videoframe=QFrame(self.mainframe)
self.videoframe.setGeometry(0,50,600,400)
##Call to set taskbar thumbnail
self.videoframe.showEvent=self.setthumbnail
self.instance = vlc.Instance()
self.player = self.instance.media_player_new()
self.player.set_hwnd(int(self.videoframe.winId()))
self.media = self.instance.media_new('C:/Users/mishra/Downloads/Video/kyakar.mp4')
self.player.set_media(self.media)
button=QPushButton('Play',self)
button.setStyleSheet('background:red')
button.setGeometry(100,0,40,30)
button.clicked.connect(lambda:[self.videoframe.show(),self.player.play()])
button1=QPushButton('Close',self)
button1.setStyleSheet('background:green')
button1.setGeometry(200,0,40,30)
button1.clicked.connect(self.onclose)
def onclose(self):
if self.player:
self.player.stop()
self.videoframe.hide()
def setthumbnail(self,event):
print('Shown')
self.thumbbar =QtWinExtras.QWinThumbnailToolBar(self)
self.thumbbar.setWindow(self.windowHandle())

if __name__ == "__main__":
app = QApplication(sys.argv)
player = Player()
player.show()
player.resize(600, 450)
sys.exit(app.exec_())

有什么方法可以实现吗?

最佳答案

我为您标记了我所做更改的行。尝试一下:

import sys
from PyQt5.QtWidgets import *
from PyQt5 import QtWinExtras
from PyQt5.QtWinExtras import QWinThumbnailToolBar, QWinThumbnailToolButton
import vlc


class Player(QMainWindow):
"""A simple Media Player using VLC and Qt
"""
def __init__(self, master=None):
QMainWindow.__init__(self, master)

self.setWindowTitle("Media Player")
self.mainframe = QFrame(self)
self.setCentralWidget(self.mainframe)

self.videoframe = QFrame(self.mainframe)
#- self.videoframe.setGeometry(0, 50, 600, 400) # ---
self.videoframe.resize(640, 480) # +++

# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +++
# QWinThumbnailToolBar
self.toolBar = QWinThumbnailToolBar(self)

# Prev, Play/Pause, Next
self.toolBtnPrev = QWinThumbnailToolButton(self.toolBar)
self.toolBtnPrev.setToolTip('Prev')
self.toolBtnPrev.setIcon(self.style().standardIcon(QStyle.SP_MediaSkipBackward))
self.toolBtnPrev.clicked.connect(self.set_prev)
self.toolBar.addButton(self.toolBtnPrev)

self.toolBtnControl = QWinThumbnailToolButton(self.toolBar)
self.toolBtnControl.setToolTip('Play')
self.toolBtnControl.setProperty('status', 0)
self.toolBtnControl.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay))
self.toolBtnControl.clicked.connect(self.set_control)
self.toolBar.addButton(self.toolBtnControl)

self.toolBtnNext = QWinThumbnailToolButton(self.toolBar)
self.toolBtnNext.setToolTip('Next')
self.toolBtnNext.setIcon(self.style().standardIcon(QStyle.SP_MediaSkipForward))
self.toolBtnNext.clicked.connect(self.set_next)
self.toolBar.addButton(self.toolBtnNext)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +++


# Call to set taskbar thumbnail
#- self.videoframe.showEvent = self.setthumbnail # ---
self.instance = vlc.Instance()
self.player = self.instance.media_player_new()
self.player.set_hwnd(int(self.videoframe.winId()))
self.media = self.instance.media_new('Samonastrojka.avi') # !!! <---
self.player.set_media(self.media)
'''
button = QPushButton('Play',self)
button.setStyleSheet('background:red')
button.setGeometry(100,0,40,30)
button.clicked.connect(lambda:[self.videoframe.show(),self.player.play()])
button1 = QPushButton('Close',self)
button1.setStyleSheet('background:green')
button1.setGeometry(200,0,40,30)
button1.clicked.connect(self.onclose)

def onclose(self):
if self.player:
self.player.stop()
self.videoframe.hide()

def setthumbnail(self,event):
print('Shown')
self.thumbbar = QtWinExtras.QWinThumbnailToolBar(self)
self.thumbbar.setWindow(self.windowHandle())
'''

# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
def set_prev(self):
pass

def set_next(self):
pass

def set_control(self):
if self.toolBtnControl.property('status') == 0:
self.toolBtnControl.setToolTip('Pause')
self.videoframe.show()
self.player.play()
self.toolBtnControl.setProperty('status', 1)
self.toolBtnControl.setIcon(self.style().standardIcon(QStyle.SP_MediaPause))
else:
self.toolBtnControl.setProperty('status', 0)
self.toolBtnControl.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay))
self.player.stop()
self.toolBtnControl.setToolTip('Play')

def showEvent(self, event):
super(Player, self).showEvent(event)
if not self.toolBar.window():
self.toolBar.setWindow(self.windowHandle())


if __name__ == "__main__":
app = QApplication(sys.argv)
player = Player()
player.show()
player.resize(640, 480)
sys.exit(app.exec_())
enter image description here

关于python - 在PyQt5中关闭/打开vlc播放器后如何使用QWinThumbnailToolBar恢复任务栏缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65061620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com