PyQt5+Designer写一个播放器

本人是第一次发文章,不喜勿喷

首先先用designer写一个界面:

 装饰进度条RCC语法:

QSlider::groove:horizontal{

height: 10px;

left: 5px;

right: 5px;

background: #dcdcdc;

}

QSlider::handle:horizontal{

border-radius: 10px;

width: 20px;

margin: -5px -1px;

background: green;

}

QSlider::sub-page:horizontal{

background: qlineargradient(

spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(27, 5, 27, 255),

stop:0.25 rgba(99, 20, 102, 255),

stop:0.5 rgba(154, 30, 158, 255),

stop:1 rgba(173, 57, 176, 255)

);

}

(RCC语法也可以根据自己的喜好来写)

然后把中间的widget提升一下部件:

 最后全写完了把他保存为gui.ui

(唠叨一句)ui转py的方式是python -m PyQt5.uic.pyuic xxx.ui -o xxx.py

 然后再创建一个随便一个名字.py

from sys import *
from tkinter.messagebox import *
from PyQt5.QtWidgets import *
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from gui import Ui_Dialog
from PyQt5.QtGui import QIcon
from PyQt5.QtMultimedia import *
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5 import *
class video_Error(SystemError):
    pass

class main(QMainWindow):

    def __init__(self, parent=None):
        super(QMainWindow, self).__init__(parent)
        self.loadgui = Ui_Dialog()
        self.loadgui.setupUi(self)
        QApplication.processEvents()
        self.play = QMediaPlayer()
        self.play.durationChanged.connect(self.getDuration)
        self.play.positionChanged.connect(self.getPosition)
        self.play.setVideoOutput(self.loadgui.video)
    def up(self):
        pass
    def open_file(self):
        try:
            l = QFileDialog.getOpenFileUrl()[0]
            self.mv = l
            self.play.setMedia(QMediaContent(l))
            self.loadgui.bf.setStyleSheet("image: url(l.png);\nfont: 25pt \"Arial\";")
            self.play.play()

        except Exception as error:
            showerror("error", error)

    def bf(self):
        if self.play.state() == 1:
            self.play.pause()
            self.loadgui.bf.setStyleSheet("image: url(l.png);\nfont: 25pt \"Arial\";")
        else:
            self.loadgui.bf.setStyleSheet("image: url(RC.png);\nfont: 25pt \"Arial\";")
            self.play.play()

    
    def getDuration(self, d):
        self.loadgui.vedio1.setRange(0, d)
        self.loadgui.vedio1.setEnabled(True)
        # 视频实时位置获取

    def getPosition(self, p):
        self.loadgui.vedio1.setValue(p)

    def updata(self, v):
        self.play.setPosition(v)


if __name__ == "__main__":
    app = QApplication(argv)
    app.setWindowIcon(QIcon('ico.png'))
    QApplication.processEvents()
    al = main()
    al.show()
    exit(app.exec_())

最后我在给菜菜们附上gui.py的代码:

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

# Form implementation generated from reading ui file 'gui.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(823, 563)
        Dialog.setMaximumSize(QtCore.QSize(824, 563))
        Dialog.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0.193, y1:0.0795455, x2:1, y2:1, stop:0.130682 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));")
        self.frame_2 = QtWidgets.QFrame(Dialog)
        self.frame_2.setGeometry(QtCore.QRect(0, 0, 821, 491))
        self.frame_2.setStyleSheet("background-color: qlineargradient(spread:reflect, x1:0.289773, y1:0.409, x2:1, y2:1, stop:0.130682 rgba(35, 30, 50, 255), stop:1 rgba(255, 255, 255, 255));")
        self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.open_file = QtWidgets.QPushButton(self.frame_2)
        self.open_file.setGeometry(QtCore.QRect(0, 0, 92, 51))
        self.open_file.setStyleSheet("font: 25pt \"Arial\";\n"
"image: url(lo.png)\n"
"")
        self.open_file.setText("")
        self.open_file.setObjectName("open_file")
        self.widget_3 = QVideoWidget(self.frame_2)
        self.widget_3.setGeometry(QtCore.QRect(0, 50, 811, 431))
        self.widget_3.setObjectName("widget_3")
        self.video = QVideoWidget(self.widget_3)
        self.video.setGeometry(QtCore.QRect(0, 0, 821, 431))
        self.video.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0.352273, y1:0.256, x2:1, y2:1, stop:0.278409 rgba(15, 105, 164, 255), stop:1 rgba(255, 255, 255, 255));")
        self.video.setObjectName("video")
        self.frame = QtWidgets.QFrame(Dialog)
        self.frame.setGeometry(QtCore.QRect(0, 490, 821, 71))
        self.frame.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0.307, y1:0.329545, x2:1, y2:1, stop:0 rgba(17, 21, 17, 255), stop:1 rgba(255, 255, 255, 255));")
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.horizontalLayoutWidget = QtWidgets.QWidget(self.frame)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(20, 10, 801, 48))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.bf = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.bf.setStyleSheet("image: url(l.png);\n"
"\n"
"font: 25pt \"Arial\";")
        self.bf.setText("")
        self.bf.setObjectName("bf")
        self.horizontalLayout.addWidget(self.bf)
        self.vedio1 = QtWidgets.QSlider(self.horizontalLayoutWidget)
        self.vedio1.setStyleSheet("\n"
"\n"
"QSlider::groove:horizontal{ \n"
"                                height: 10px; \n"
"                                left: 5px; \n"
"                                right: 5px; \n"
"                                background: #dcdcdc; \n"
"                              } \n"
"    QSlider::handle:horizontal{ \n"
"                            border-radius: 10px; \n"
"                            width:  20px; \n"
"                            margin: -5px -1px; \n"
"                            background: green; \n"
"                            } \n"
"    QSlider::sub-page:horizontal{\n"
"                                background: qlineargradient(\n"
"                                                            spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(27, 5, 27, 255), \n"
"                                                            stop:0.25 rgba(99, 20, 102, 255), \n"
"                                                            stop:0.5 rgba(154, 30, 158, 255), \n"
"                                                            stop:1 rgba(173, 57, 176, 255)\n"
"                                                            );\n"
"                                }\n"
"")
        self.vedio1.setOrientation(QtCore.Qt.Horizontal)
        self.vedio1.setObjectName("vedio1")
        self.horizontalLayout.addWidget(self.vedio1)
        self.label = QtWidgets.QLabel(self.horizontalLayoutWidget)
        self.label.setText("")
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)

        self.retranslateUi(Dialog)
        self.open_file.clicked.connect(Dialog.open_file)
        self.bf.clicked.connect(Dialog.bf)
        self.vedio1.sliderMoved.connect(Dialog.updata)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
from PyQt5.QtMultimediaWidgets import QVideoWidget

效果如下:

 

听说家里有孩子的人才可对出下一句:

come on得喂

爱你孤身走暗巷

好了这就是本期内容,如有意见评论区见,白白

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PyQt5一个 Python 绑定的 Qt 库,它可以让开发人员使用 Python 语言来创建 GUI 应用程序。pyUIC 是 PyQt5一个工具,它可以将 Qt Designer 设计的 UI 文件转换为 Python 代码,以便在应用程序中使用。 PyCharm 是一个流行的 Python 集成开发环境(IDE),它提供了许多功能,如代码自动完成、调试器、版本控制等等。PyCharm 可以与 PyQt5 和 pyUIC 配合使用,以便在 PyCharm 中轻松创建和管理 PyQt5 应用程序。 如果你想使用 PyQt5 和 pyUIC 开发 GUI 应用程序,可以在 PyCharm 中创建一个新的 Python 项目,并安装 PyQt5 库。然后,使用 Qt Designer 创建 UI 文件,并使用 pyUIC 将其转换为 Python 代码。最后,将生成的 Python 代码复制到 PyCharm 项目中,并在代码中添加所需的逻辑以实现应用程序的功能。 ### 回答2: PyQt5一个基于Python语言的图形用户界面库,它结合了Qt框架和Python语言的优点,可以用于开发功能强大的跨平台应用程序。PyQt5支持多种操作系统,并且提供了丰富的控件和功能模块,可以方便地创建各种界面元素,如窗口、按钮、菜单等。它具有简单易学的特点,可以通过使用Python语言进行快速开发和调试。 PyUIC是PyQt5一个额外工具,用于将Qt的UI文件(.ui)转换为可用的Python代码。通过使用PyUIC,开发人员可以将UI设计师创建的界面文件转换为Python代码,然后在PyQt5中使用它们。这样可以简化开发过程,使得界面的设计和逻辑程序的开发可以分离,并且降低了代码的书难度。 PyCharm是一款由JetBrains公司开发的Python集成开发环境(IDE),它提供了丰富的功能和工具,能够大大提高Python开发的效率。PyCharm对PyQt5以及其他Python库的支持非常友好,可以提供代码提示、自动完成功能、调试工具等,帮助开发人员更加便捷地开发和调试PyQt5应用程序。PyCharm还具有版本控制、代码重构、性能分析等功能,可以帮助开发人员提高代码质量和开发效率。 总结起来,PyQt5一个用于创建Python图形界面的工具,PyUIC是PyQt5一个辅助工具,用于将Qt的UI文件转换为Python代码,而PyCharm是一款Python IDE,能够提供强大的开发和调试工具来支持PyQt5开发。这三者共同协作,能够帮助开发人员更好地使用PyQt5进行应用程序开发。 ### 回答3: PyQt5一个基于Python语言的桌面应用开发工具包,在使用Python编桌面应用程序时非常方便和灵活。它提供了丰富的界面组件和功能,可以用来创建功能强大、美观的图形界面。 PyUIC是PyQt5中的一个工具,用于将Qt Designer设计的界面文件(.ui文件)转换成Python代码。通过将ui文件转化为Python代码,我们可以在程序中动态地生成界面,并为界面中的部件添加事件处理等。 PyCharm是一种Python集成开发环境(IDE),它提供了丰富的功能,方便我们、调试和运行Python代码。它具有智能代码编辑功能、强大的代码检查和建议、调试器以及集成版本控制等。对于使用PyQt5和PyUIC进行桌面应用开发开发者来说,PyCharm提供了非常友好的编码环境和调试功能,极大地提高了开发效率。 综上所述,PyQt5是一种用于桌面应用开发的Python工具包,而PyUIC则是PyQt5一个用于将Qt Designer界面文件转换为Python代码的工具。而PyCharm是一种强大的Python集成开发环境,可提供良好的编码环境和调试功能。在使用PyQt5和PyUIC进行桌面应用开发时,可以借助PyCharm提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值