1

Consider the following example:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from mplayer import *


class mplayerStarter(QMainWindow):
    def __init__(self, parent=None):
        super(mplayerStarter, self).__init__(parent)
        the_button = QPushButton('Start Mplayer')
        the_button.clicked.connect(self.start)
        self.setCentralWidget(the_button)

    def start(self):
        player = Player()
        player.loadfile('/tmp/video.mp4')

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    form = mplayerStarter()
    form.show()
    app.exec_()

If I invoke the program and press the button, the video appears but vanishes immediatly. Any idea how to fix this?

zx81
  • 41,100
  • 9
  • 89
  • 105
student
  • 1,636
  • 3
  • 29
  • 53

1 Answers1

2

I think it might be being garbage collected. Try this:

class mplayerStarter(QMainWindow):
    def __init__(self, parent=None):
        super(mplayerStarter, self).__init__(parent)
        the_button = QPushButton('Start Mplayer')
        the_button.clicked.connect(self.start)
        self.setCentralWidget(the_button)
        self.player = None

    def start(self):
        self.player = Player()
        self.player.loadfile('/tmp/video.mp4')
Claudiu
  • 224,032
  • 165
  • 485
  • 680