QMediaplayer 无法在无框和半透明背景 PyQt5 上工作

2024-03-25

我正在使用 QMediaplayer 制作视频播放器,但它无法在无框和半透明背景窗口上工作。我想制作圆角窗口,所以我需要无框和半透明窗口。 这是我的代码:

from PyQt5.QtCore import Qt, QUrl
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtWidgets import QApplication,QMainWindow,QFrame
import sys     
class Player(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setWindowTitle("PyQt Video Player Widget Example") 
        self.resize(600,400)
        self.frame=QFrame(self)
        self.frame.setStyleSheet('background:grey;border-radius:20px;')
        self.setCentralWidget(self.frame)
        #self.setWindowFlag(Qt.FramelessWindowHint)
        #self.setAttribute(Qt.WA_TranslucentBackground)
        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        videoWidget = QVideoWidget(self.frame)
        videoWidget.setGeometry(10,10,580,380)
        self.resize(600,400)
        self.mediaPlayer.error.connect(self.handleError)
        self.mediaPlayer.setVideoOutput(videoWidget)
        self.mediaPlayer.setMedia(
                         QMediaContent(QUrl.fromLocalFile("C:/Users/mishra/Desktop/HiddenfilesWindow/10000000_1874628825927192_6229658593205944320_n(1).mp4")))
        self.mediaPlayer.play()
    def handleError(self):
        print("Error: " + self.mediaPlayer.errorString())
          
if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = Player()
    
    window.show()
    sys.exit(app.exec_())

设置半透明背景后,它只播放音频而不播放视频。有人知道如何修复它吗?


Try it:

import sys
from PyQt5.QtCore import Qt, QUrl, QRectF
from PyQt5.QtGui import QPainterPath, QRegion
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtWidgets import QApplication, QMainWindow, QFrame, QWidget, QHBoxLayout
     

class Player(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setWindowTitle("PyQt Video Player Widget Example") 
        self.resize(600,400)
        self.frame= QFrame(self)  
        
#        self.frame.setStyleSheet('background:grey; border-radius: 20px;')
        self.setStyleSheet("Player {background: #000;}")                   # +++
        
        self.setCentralWidget(self.frame)
#        self.setWindowFlag(Qt.FramelessWindowHint)
#        self.setAttribute(Qt.WA_TranslucentBackground)

        layout = QHBoxLayout(self.frame)                                   # +++
        videoWidget = QVideoWidget()                                       # +++
        layout.addWidget(videoWidget)                                      # +++

        
        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
#        videoWidget = QVideoWidget(self.frame)             
#        videoWidget.setGeometry(10,10,580,380)
#        self.resize(600,400)
        self.mediaPlayer.error.connect(self.handleError)
        self.mediaPlayer.setVideoOutput(videoWidget)
        self.mediaPlayer.setMedia(
            QMediaContent(QUrl.fromLocalFile("Samonastrojka.avi")))
        self.mediaPlayer.play()

# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv        
    def resizeEvent(self, event):
        path = QPainterPath()
        path.addRoundedRect(QRectF(self.rect()), 20, 20)
        reg = QRegion(path.toFillPolygon().toPolygon())
        self.setMask(reg)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
    def handleError(self):
        print("Error: " + self.mediaPlayer.errorString())
   
   
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Player()
    window.show()
    sys.exit(app.exec_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QMediaplayer 无法在无框和半透明背景 PyQt5 上工作 的相关文章

随机推荐

  • Android并发使用[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Android 有许多不同的便利措施可以在单独的线程上同时执行代码 但我不确定何时应该使用每种方法 或者这些不同方法的最佳实践是什么
  • 打印数组值两次 / php 和 pdo

    我收到 field value 两次 但为什么呢 正常的结构是
  • 在ggplot2散点图中使用伪彩色来表示密度

    有人知道如何创建像屏幕截图中那样的图表吗 我试图通过调整 alpha 来获得类似的效果 但这会使异常值几乎看不见 我只从一个名为 FlowJo 的软件中知道这种类型的图 这里他们将其称为 伪彩色点图 不确定这是否是官方术语 我想专门在 gg
  • ng-click 在动态创建的内容中不起作用

    我在 Angular 中有这个功能 我在其中添加了一个带有 ng click 的新幻灯片 var addSlide function scope slideIndex event slideIndex var slider angular
  • 通过 PHP 批量插入 MySQL 数据库会跳过名称

    我目前正在开发一个跟踪程序 可以同时跟踪数百个用户 但我遇到了一个有点烦人的问题 我让用户插入数据库的方法是通过 html 文本区域 然后将它们作为参数发送 总是有大约 60 人中的 7 人 也总是相同的名字 被插入到数据库中 但它没有插入
  • 创建具有不同单元格类型的分组 UITableview

    我需要创建一个分组的 uitableview 其中包括一些部分以及每个部分中可能不同的单元格类型 我正在尝试创建类似旧的 foursquare 应用程序 用户页面 包括 排行榜 朋友建议 朋友 统计数据 最探索的类别 部分 我对 ios 编
  • ASP.NET MVC 客户端验证

    我热衷于使用 ASP NET MVC 但我希望改进的领域之一是客户端验证 我知道最新版本 预览版 5 有很多用于验证的新功能 但它们似乎都是在页面发布之后 我看过一篇有趣的文章史蒂夫 桑德森 http blog codeville net
  • 没有这样的模块 Crashlytics - Pod 似乎丢失了

    我经常收到错误 No such module Crashlytics 我通常会花费数小时清理构建文件夹 重新安 装所有内容 运行 pod install 等来解决该问题 但我对此感到厌倦 并希望一劳永逸地解决该问题 我的 podfile 包
  • Mongoose 验证外键(参考)

    我尝试了几种不同的方法来验证 Mongoose 中的外键 但无法弄清楚 我有一个这样的架构 Doctors js var schema mongoose Schema email type String module exports mon
  • 使用 Django 上传表单清空 Request.FILES

    尝试使用非常简单的形式将文件上传到新的类实例中 我希望这两个文件都在request FILES但它是空的 我在捆绑的开发服务器上 被困在这里并解决了所有相关问题 wayfinder map media file request FILES
  • 复选框样式并使其选中

    从数据库检索到的复选框太长了 它是向下的 有什么办法使它成为四层 单击 所有字段 复选框时 必须选中所有复选框 这要怎么做呢 我的代码 protected function getConfigForm sql SELECT id order
  • 检查字符串中的字符是否都是唯一的

    我正在尝试使用 JS 通过数组来解决这个问题 var str abcdefgh for i 0 i lt 255 i arr i false function check for i 0 i lt str length i if arr s
  • 如何从实体管理器获取 jpa 数据源属性

    大家好 我想知道是否可以通过实体管理器获取数据库连接属性 我的 persistence xml 看起来像这样
  • 暂停事件在 PhoneGap iPhone 中无法正常工作?

    这是我的代码 This is an event that fires when a PhoneGap application is put into the background document addEventListener paus
  • Go 语言中的打印格式列表

    只是想知道使用 fmt 包的功能的打印格式列表 例如 v 用于打印值 T 可以打印值的类型 还有什么 动词 格式列表可在fmt 包的文档 http golang org pkg fmt General v the value in a de
  • 如何在.net6中使用WebApplicationFactory(没有可讲的入口点)

    在 ASP NET Core 6 中 默认模板将所有内容从Startup cs into Program cs 并使用 Program cs 中的顶级语句 因此不再有 可以说的 Program乙醚类 这看起来很棒 但现在 我需要测试所有这些
  • 在快速解析 Json 时无法将“NSNull”类型的值转换为“NSString”

    我有以下课程 class BannerResponse NSObject let URL Url let CONTACT NO ContactNo let IMAGE Image let BIG IMAGE BigImage let ID
  • 为什么 Evan 的调试器说我要转向 eax 而不是 rax?

    我正在将一些值移至 rax 但调试器显示它正在移至 eax 这是怎么回事 是用调试器 nasm 还是我的知识 无论如何 代码当然可以完美运行 我使用的调试器是 Evan s Debugger 简而言之 您和调试器都是正确的 当您将某物移动到
  • C++ 风格与性能?

    C 风格与性能 使用 C 风格的东西 比某些 C 等价物更快 这是不好的做法吗 例如 不要使用atoi itoa atol ETC 使用std stringstream 永远不要使用原始指针 而是使用智能指针 好吧 它们真的很有用 每个人都
  • QMediaplayer 无法在无框和半透明背景 PyQt5 上工作

    我正在使用 QMediaplayer 制作视频播放器 但它无法在无框和半透明背景窗口上工作 我想制作圆角窗口 所以我需要无框和半透明窗口 这是我的代码 from PyQt5 QtCore import Qt QUrl from PyQt5