Re: [PyQt] PyQt 5.1 App doesn't exit after QQuickView closed

2013-08-27 Thread Phil Thompson
On Tue, 27 Aug 2013 09:26:55 +1200, Glenn Ramsey g...@componic.co.nz
wrote:
 Hi,
 
 In the following example, the application doesn't exit after the
 QQuickView 
 window is closed. Is this the correct behaviour or is it a bug? This is
 using 
 snapshot-693a95fde3fa on OSX 10.8.4 with Qt 5.1, PyQt 5.1 and macports
 python 
 built as 32 bit.
 
 Glenn
 
 import sys
 import os
 
 from PyQt5 import QtCore
 from PyQt5 import QtWidgets
 from PyQt5 import QtQuick
 
 def main():
  app = QtWidgets.QApplication(sys.argv)
  quickview = QtQuick.QQuickView()
  if getattr(sys, 'frozen', None):
  basedir = sys._MEIPASS
  else:
  basedir = os.path.dirname(__file__)
  quickview.setSource(QtCore.QUrl.fromLocalFile(os.path.join(basedir,

 'hello.qml')))
  quickview.show()
 
  app.exec_()
 
 if __name__ == __main__:
  main()
 
 
 hello.qml:
 
 import QtQuick 2.0
 
 Rectangle {
  width: 360
  height: 360
  Text {
  anchors.centerIn: parent
  text: Hello World
  }
  MouseArea {
  anchors.fill: parent
  onClicked: {
  Qt.quit();
  }
  }
 }

You need to connect up the engine's quit() signal...

quickview.engine().quit.connect(app.quit)

Phil
___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


Re: [PyQt] PyQt 5.1 App doesn't exit after QQuickView closed

2013-08-27 Thread Glenn Ramsey

On 28/08/13 02:16, Phil Thompson wrote:

On Tue, 27 Aug 2013 09:26:55 +1200, Glenn Ramsey g...@componic.co.nz
wrote:

Hi,

In the following example, the application doesn't exit after the
QQuickView
window is closed. Is this the correct behaviour or is it a bug? This is
using
snapshot-693a95fde3fa on OSX 10.8.4 with Qt 5.1, PyQt 5.1 and macports
python
built as 32 bit.

Glenn

import sys
import os

from PyQt5 import QtCore
from PyQt5 import QtWidgets
from PyQt5 import QtQuick

def main():
  app = QtWidgets.QApplication(sys.argv)
  quickview = QtQuick.QQuickView()
  if getattr(sys, 'frozen', None):
  basedir = sys._MEIPASS
  else:
  basedir = os.path.dirname(__file__)
  quickview.setSource(QtCore.QUrl.fromLocalFile(os.path.join(basedir,



'hello.qml')))
  quickview.show()

  app.exec_()

if __name__ == __main__:
  main()


hello.qml:

import QtQuick 2.0

Rectangle {
  width: 360
  height: 360
  Text {
  anchors.centerIn: parent
  text: Hello World
  }
  MouseArea {
  anchors.fill: parent
  onClicked: {
  Qt.quit();
  }
  }
}


You need to connect up the engine's quit() signal...

quickview.engine().quit.connect(app.quit)

Phil



That only works if I either add global app to main or bind app to a 
functools.partial.


Glenn


___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt