QML, Python, Signals, and Slots
    Eric Mesa 
    ericsbinaryworld at gmail.com
       
    Sun Jun 24 14:56:51 UTC 2012
    
    
  
I have the following in my Python file:
import sys
from PyQt4.QtCore import QDateTime, QObject, QUrl, pyqtSignal
from PyQt4.QtGui import QApplication
from PyQt4.QtDeclarative import QDeclarativeView
#this class will emit success if photo is added to group
class updateGroup(QObject):
  now = pyqtSignal(int)
  def emit_now(self):
    number = 1
    self.now.emit(number)
app = QApplication(sys.argv)
update = updateGroup()
view = QDeclarativeView()
view.setSource(QUrl('flickrviews.qml'))
view.setResizeMode(QDeclarativeView.SizeRootObjectToView)
rootObject = view.rootObject()
rootObject.updateRequired.connect(update.emit_now) #sends signal
update.now.connect(rootObject.updateColor) #tells it which function in qml
gets that signal
view.setGeometry(100, 100, 400, 240)
view.show()
app.exec_()
and the relevant parts in my QML file are:
signal updateRequired;
    function updateColor(number)
                {
                  if(number==1)
                  {
                    addtogroup.buttonColor="blue"
                  }
                }
and later in the file:
   Button{
                id: addtogroup
                width: 200
                bLabel: "Add to Next Group"
                //onButtonClick:
plasmoid.runCommand("/home/ermesa/bin/qml/plasmoids/flickrviews2/contents/ui/flickrhelpers/addtogroup.py",
[photoID,nextphotogroup])
                onButtonClick: updateRequired()
              }
Just curious about one thing:
1) With this framework I can get information from the python program to
affect the QML (and change the button to a blue colour).  How do I get
information to the python program?   In other words, if I have a python
function that's function(int) -> how do I provide the int argument for the
python FROM the QML?
It's a little hard for me to figure out because this stuff is all indirect
- in the QML the signal is referred to as if it were a function.  And the
function gets the data from the signal, but it doesn't seem to make sense
how that happens because there's no real link to it.  I kinda understand
what I'm doing, but not enough to figure out how to get the into to python.
Thanks,
--
Eric Mesa
http://about.me/ericmesa
http://www.ericsbinaryworld.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20120624/c7af683a/attachment.html>
    
    
More information about the Plasma-devel
mailing list