<HTML>
<HEAD>
<TITLE>Re: [PyQt] floating player controls (like new Quicktime)?</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>You are running into problems with the operating system&#8217;s compositing layer.<BR>
<BR>
I have had the same problem with transparent over OpenGL. &nbsp;What you might try, is to move your player widget into a QGraphicsWidget and play it in a QGraphicsView. &nbsp;If this works, you can make your floating widgets on the canvas.<BR>
<BR>
I&#8217;m not sure if phonon widgets can be played in this way, but they should.<BR>
<BR>
Good luck!<BR>
<BR>
Brian<BR>
<BR>
On 6/17/09 5:28 PM, &quot;vamp&quot; &lt;<a href="kurt.barlow@gmail.com">kurt.barlow@gmail.com</a>&gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
<BR>
Hello,<BR>
<BR>
After watching the apple keynote I thought I would try to duplicate the<BR>
floating video player control they are using in the new version of<BR>
Quicktime.<BR>
<BR>
A semi-transparent widget on top of a window works fine but I have problems<BR>
when it comes to placing it over top of a playing video.<BR>
<BR>
Ultimately, I would like to have a widget with a semi-transparent background<BR>
that I can add controls to (labels with images) sitting on top of the<BR>
playing video (without any flicker).<BR>
<BR>
Its just the semi-transparent widget on top of the playing video I need help<BR>
with. Is it possible do you think? Here is a simple example of my problem<BR>
(in pyqt 4.5 &nbsp;using qt 4.5, python 2.6 ), thanks ...<BR>
<BR>
import sys, time<BR>
<BR>
from PyQt4 import QtCore, QtGui<BR>
from PyQt4.phonon import Phonon<BR>
<BR>
app = QtGui.QApplication(sys.argv)<BR>
<BR>
screen = QtGui.QDesktopWidget().screenGeometry(-1)<BR>
<BR>
screenWidth = screen.width()<BR>
screenHeight = screen.height()<BR>
<BR>
<BR>
class PlayControl(QtGui.QWidget):<BR>
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self, parent):<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QtGui.QWidget.__init__(self, parent)<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)<BR>
<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;def paintEvent(self, event):<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;painter = QtGui.QPainter(self)<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# alpha color to paint onto the widget<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col = QtGui.QColor(0,0,0,125)<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#fill the rectangle<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;painter.fillRect(0, 0, 200, 200, col)<BR>
<BR>
<BR>
<BR>
<BR>
class VideoPlayer(Phonon.VideoPlayer):<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self, parent=None):<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Phonon.VideoPlayer.__init__(self)<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.setWindowFlags(QtCore.Qt.FramelessWindowHint)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.resize(screenWidth, screenHeight)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.move(0,0)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.load(Phonon.MediaSource(&quot;c:/temp/FirefoxInMotion.ogv&quot;))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.videoWidget().setScaleMode(1)<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc = PlayControl(self)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc.setGeometry(0,50,200,200)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc.show() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
<BR>
<BR>
class GenericWidget(QtGui.QWidget):<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self, parent=None):<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QtGui.QWidget.__init__(self, parent)<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.setWindowFlags(QtCore.Qt.FramelessWindowHint)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.resize(screenWidth, screenHeight)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.move(0,0)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc = PlayControl(self)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc.setGeometry(0,50,200,200)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc.show() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
<BR>
<BR>
# working fine<BR>
gw = GenericWidget()<BR>
gw.show()<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
# not working<BR>
'''<BR>
vp = VideoPlayer()<BR>
vp.show()<BR>
vp.play()<BR>
'''<BR>
<BR>
sys.exit(app.exec_())<BR>
<BR>
<BR>
<BR>
--<BR>
View this message in context: <a href="http://www.nabble.com/floating-player-controls-%28like-new-Quicktime%29--tp24082432p24082432.html">http://www.nabble.com/floating-player-controls-%28like-new-Quicktime%29--tp24082432p24082432.html</a><BR>
Sent from the PyQt mailing list archive at Nabble.com.<BR>
<BR>
_______________________________________________<BR>
PyQt mailing list &nbsp;&nbsp;&nbsp;<a href="PyQt@riverbankcomputing.com">PyQt@riverbankcomputing.com</a><BR>
<a href="http://www.riverbankcomputing.com/mailman/listinfo/pyqt">http://www.riverbankcomputing.com/mailman/listinfo/pyqt</a><BR>
<BR>
</SPAN></FONT></BLOCKQUOTE>
</BODY>
</HTML>