Buenas queria hacer unas preguntas sobre algo que se me ocurrio y no se si es posible hacerlo.
La idea sería una aplicación que corra un video de imagen de fondo (background), pero intentando hacerlo me surgieron los siguientes problemas.
1- No puedo agregar un layout al player del phonon de tal forma que se auto ajuste y luego agregar otro frame encima .
ya intente usar la posicion: absolute; pero nada.
La onda sería que el video por atras haga el resize y poderle poner más objetos encima.
2- Al poner todo sin layout y ponerle un frame encima del player phonon no puedo hacer que el background del frame sea transparente o directamente no tenga fondo y aprobé usando.
Código:
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
self.setStyleSheet("background: rgba(0,255,0,20%)")
Pero al usar esto desaparece la imagen del video y solo queda el sonido del mismo.
3- No entiendo en que influencia el windowOpacity en el QtDesigner lo aumento y no veo ningun cambio
Programa:
Código:
import sys
from PyQt4 import QtCore, QtGui, QtSql, phonon
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtSql import *
from PyQt4.phonon import Phonon
from so_onsterion_vista import Ui_ventana_principal
class Principal (QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
# self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
# self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
# self.setStyleSheet("background: rgba(0,255,0,20%)")
self.ventana = Ui_ventana_principal()
self.ventana.setupUi(self)
# self.ventana.stackedWidget_paginas.setWindowFlags(QtCore.Qt.FramelessWindowHint)
# self.ventana.stackedWidget_paginas.setAttribute(QtCore.Qt.WA_TranslucentBackground)
# self.ventana.stackedWidget_paginas.setAttribute(QtCore.Qt.WA_OpaquePaintEvent)
# self.ventana.stackedWidget_paginas.setStyleSheet("background-color: transparent")
# self.ventana.stackedWidget_paginas.setStyleSheet("background: none")
# self.ventana.stackedWidget_paginas.setStyleSheet("background: rgba(0,255,0,20%)")
# self.ventana.stackedWidget_paginas.setStyleSheet("opacity: 0")
self.ventana.video_reproductor.play(Phonon.MediaSource('video_test.mp4'))
self.showFullScreen()
if __name__ == '__main__':
#Instancio la aplicacion (necesario para que levante el driver de mysql y todo)
app = QtGui.QApplication(sys.argv)
ventana = Principal()
ventana.show()
sys.exit(app.exec_())
Vista:
Código:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_ventana_principal(object):
def setupUi(self, ventana_principal):
ventana_principal.setObjectName(_fromUtf8("ventana_principal"))
ventana_principal.resize(920, 727)
ventana_principal.setStyleSheet(_fromUtf8("#ventana_principal{\n"
" \n"
"}\n"
"\n"
"#stackedWidget_paginas {\n"
" padding: 20px;\n"
" position:absolute; \n"
"\n"
"}\n"
"\n"
"#frame_background {\n"
"\n"
" background-color: rgb(0, 0, 0);\n"
"}\n"
"\n"
"#label_bienvenido {\n"
" font: 75 16pt \"MS Shell Dlg 2\";\n"
" \n"
" color: rgb(255, 255, 255);\n"
"}"))
self.widget_principal = QtGui.QWidget(ventana_principal)
self.widget_principal.setObjectName(_fromUtf8("widget_principal"))
self.frame_background = QtGui.QFrame(self.widget_principal)
self.frame_background.setEnabled(False)
self.frame_background.setGeometry(QtCore.QRect(9, 9, 911, 681))
self.frame_background.setStyleSheet(_fromUtf8("position:absolute;\n"
"top: 500px;"))
self.frame_background.setFrameShape(QtGui.QFrame.StyledPanel)
self.frame_background.setFrameShadow(QtGui.QFrame.Raised)
self.frame_background.setObjectName(_fromUtf8("frame_background"))
self.video_reproductor = phonon.Phonon.VideoPlayer(self.frame_background)
self.video_reproductor.setEnabled(False)
self.video_reproductor.setGeometry(QtCore.QRect(-10, 0, 921, 711))
self.video_reproductor.setMinimumSize(QtCore.QSize(450, 250))
self.video_reproductor.setObjectName(_fromUtf8("video_reproductor"))
self.stackedWidget_paginas = QtGui.QStackedWidget(self.widget_principal)
self.stackedWidget_paginas.setGeometry(QtCore.QRect(170, 125, 571, 471))
self.stackedWidget_paginas.setAutoFillBackground(False)
self.stackedWidget_paginas.setFrameShape(QtGui.QFrame.NoFrame)
self.stackedWidget_paginas.setObjectName(_fromUtf8("stackedWidget_paginas"))
self.page = QtGui.QWidget()
self.page.setObjectName(_fromUtf8("page"))
self.label_bienvenido = QtGui.QLabel(self.page)
self.label_bienvenido.setGeometry(QtCore.QRect(10, 0, 511, 51))
self.label_bienvenido.setAlignment(QtCore.Qt.AlignCenter)
self.label_bienvenido.setObjectName(_fromUtf8("label_bienvenido"))
self.stackedWidget_paginas.addWidget(self.page)
self.page_2 = QtGui.QWidget()
self.page_2.setObjectName(_fromUtf8("page_2"))
self.stackedWidget_paginas.addWidget(self.page_2)
ventana_principal.setCentralWidget(self.widget_principal)
self.menubar = QtGui.QMenuBar(ventana_principal)
self.menubar.setGeometry(QtCore.QRect(0, 0, 920, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
ventana_principal.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(ventana_principal)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
ventana_principal.setStatusBar(self.statusbar)
self.retranslateUi(ventana_principal)
self.stackedWidget_paginas.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(ventana_principal)
def retranslateUi(self, ventana_principal):
ventana_principal.setWindowTitle(QtGui.QApplication.translate("ventana_principal", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
self.label_bienvenido.setText(QtGui.QApplication.translate("ventana_principal", "Bienvenido a Onsterion System", None, QtGui.QApplication.UnicodeUTF8))
from PyQt4 import phonon