Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x pyqt5视频小部件和表格小部件并排_Python 3.x_Pyqt5 - Fatal编程技术网

Python 3.x pyqt5视频小部件和表格小部件并排

Python 3.x pyqt5视频小部件和表格小部件并排,python-3.x,pyqt5,Python 3.x,Pyqt5,我想要一个并排的表格小部件,一个视频小部件和一个webview小部件。要垂直堆叠的视频和webview小部件。 我试着先让表格小部件和视频小部件并排,但是视频小部件被表格小部件隐藏了。我能够听到音频,所以视频似乎正在运行,但似乎没有显示视频部分。 代码中有什么错误? 粘贴示例代码。我还没有添加web小部件 import sys from PyQt5 import QtGui, QtCore from PyQt5.QtCore import QDir, Qt, QUrl from PyQt5.Qt

我想要一个并排的表格小部件,一个视频小部件和一个webview小部件。要垂直堆叠的视频和webview小部件。 我试着先让表格小部件和视频小部件并排,但是视频小部件被表格小部件隐藏了。我能够听到音频,所以视频似乎正在运行,但似乎没有显示视频部分。 代码中有什么错误? 粘贴示例代码。我还没有添加web小部件

import sys
from PyQt5 import QtGui, QtCore
from PyQt5.QtCore import QDir, Qt, QUrl
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtWidgets import (QMainWindow, QApplication, QWidget, QTableWidget,QVBoxLayout,
    QTableWidgetItem, QLabel, QHBoxLayout,QGridLayout)

class Window(QWidget):  
    def __init__(self,):
        super().__init__()
        table1 = QTableWidget()
        table1.setRowCount(2)
        table1.setColumnCount(2)
        table1.setItem(0,0, QTableWidgetItem("Cell (1,1)"))
        table1.setItem(0,1, QTableWidgetItem("Cell (1,2)"))
        table1.setItem(1,0, QTableWidgetItem("Cell (2,1)"))
        table1.setItem(1,1, QTableWidgetItem("Cell (2,2)"))

        self.VideoWidget = QVideoWidget()

        self.player = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        self.player.setMedia(QMediaContent(QUrl.fromLocalFile("test.mp4")))
        self.player.play()
        self.player.setVideoOutput(self.VideoWidget)

        self.layout = QHBoxLayout()
        self.layout.addWidget(table1)
        self.layout.addWidget(self.VideoWidget)

        self.setLayout(self.layout) 

        self.move(0,0)
        self.resize(320, 240)

        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()

    app.exec_()

我使用QSplitter解决了这个问题。 代码如下:

import sys
from PyQt5 import QtGui, QtCore
from PyQt5.QtCore import QDir, Qt, QUrl
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtWidgets import (QMainWindow, QApplication, QWidget, QTableWidget,QVBoxLayout,
    QTableWidgetItem, QHBoxLayout,QSplitter,QGroupBox)
from PyQt5.QtWebKit import *
from PyQt5.QtWebKitWidgets import *


class Window(QWidget):  
    def __init__(self,):
        super().__init__()

        self.v_layout = QVBoxLayout(self)

        self.splitter = QSplitter(QtCore.Qt.Horizontal)

        self.left = QGroupBox('Left')

        self.table1 = QTableWidget()
        self.table1.setRowCount(2)
        self.table1.setColumnCount(2)
        self.table1.setItem(0,0, QTableWidgetItem("Cell (1,1)"))
        self.table1.setItem(0,1, QTableWidgetItem("Cell (1,2)"))
        self.table1.setItem(1,0, QTableWidgetItem("Cell (2,1)"))
        self.table1.setItem(1,1, QTableWidgetItem("Cell (2,2)"))

        self.left_layout = QVBoxLayout(self.left)
        self.left_layout.addWidget(self.table1)

        self.right = QGroupBox('Right')
        self.VideoWidget = QVideoWidget()

        self.player = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        self.player.setMedia(QMediaContent(QUrl.fromLocalFile("test.mp4")))
        self.player.play()
        self.player.setVideoOutput(self.VideoWidget)

        self.webview = QWebView()
        url = "https://www.google.com"
        self.webview.load(QUrl(url))

        self.right_layout = QVBoxLayout(self.right)
        self.right_layout.addWidget(self.webview)

        self.right_layout.addWidget(self.VideoWidget)
        self.splitter.addWidget(self.left)
        self.splitter.addWidget(self.right)

        self.v_layout.addWidget(self.splitter)

        self.resize(840,680)
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()

    app.exec_()

如果我使用绝对路径(并设置一个合理的窗口大小),一切对我来说都很好。我将视频保存在与脚本相同的文件夹中。我确认正在播放视频,因为我听到了音频。另外,如果我禁用了表格小部件,那么我会看到正在播放的视频。此外,我还尝试将self.resize(320240)设置为640x480,但它不起作用。我编辑了我的文章,并发布了工作示例。对于谷歌地图的崩溃问题,我启动了一个新的线程