PyQt5在新窗口中打开QMediaplayer并播放视频

2024-09-27 20:18:12 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能要归结为对python的基本理解,但是我很难用PyQt5和Python3在一个新窗口中打开一个视频。在

运行此代码时:

from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import  QApplication
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
import sys

app = QApplication(sys.argv)
w = QVideoWidget()
w.resize(300, 300)
w.move(0, 0)
w.show()
player = QMediaPlayer()
player.setMedia(QMediaContent(QUrl.fromLocalFile({inputVideo})))
player.setVideoOutput(w)
player.play()
sys.exit(app.exec_())

窗口将打开并播放视频文件。在

我试图在主程序中将此代码添加到类中,并尝试调用它,但总是失败。在

我想实现的是从主GUI中按QPushbutton打开一个新窗口并在新窗口中播放视频。在

正如我所说的,这可能是基本的python编码,但我想我还没有做到。在

非常感谢您的帮助!! 谢谢!在


Tags: 代码fromimportapp视频syspyqt5python3
3条回答

你问的问题是正确的。我不知道你的代码为什么会崩溃。但是考虑一下:

A将包含B,B将包含A,其中包含B,其中包含A,其中包含B

这可能是堆栈溢出的原因。如果您单步执行代码,程序会在什么时候崩溃

另外,如果您使用静态函数创建静态类,您可能会做得很好

  public static class myUtility {


   public static void someFunction() { . . .}





 }

编辑: 在盯着你的代码看了几分钟之后,我可能已经理解了你想做什么。让我试一试:

假设您希望“脏”代码位于B中。将B声明为抽象:

public abstract class ActivityB extends Activity {
 . . . 

}

那么你的A班呢,

public class ActivityA extends Activity implements ActivityB {

}

这就是你想要“实现”的目标吗

这个问题似乎与您在活动A中实例化活动B有关,但您的意图是使活动B成为活动A的扩展

public class ActivityA extends Activity {

ActivityB test= new ActivityB();  // i.e., this line is suspicious Activity B extends A which instantiates B...it's a bit circular... 

除了其他人的答案,您正在创建一个2合1活动*infinty。只需在活动中将“helper”类声明并初始化为新对象:

MyHelper helper = new MyHelper(context);
// Now, you can access your helper class' functions
String string = helper.helperMethod();

我希望这有助于你的理解,快乐编码

相关问题 更多 >

    热门问题