Yea that example was written to be a standalone script. It creates a
QApplication and whatnot.
Your script formatting looks nice here, although if its long examples its
generally nicer to either use pastebin or gist with a link.


On Tue, Jan 14, 2014 at 12:46 PM, Michael Boon <[email protected]> wrote:

> Thanks all.
>
> In addition to your solutions, the reason none of my tests worked is that
> I had somehow messed up my Python installation and python.exe was missing.
> (No, I have no idea how either!) I finally tried a test using
> subprocess.POpen(['python', ...) and got an error. Reinstalled python 2.6
> and all is good now, except for an error involving pydevd that may be
> unavoidable. I am confused as to why QProcess didn't produce any stderror
> output about my missing python.exe.
>
> The same code saved to a .py file and imported to the Script Editor didn't
> produce any output from the QProcess. I guess that's because the QProcess
> was a child of the main module, and the module was destroyed after the line
> myTest.run()
>
> I also tried running Justin's 
> blocking.py<https://gist.github.com/justinfx/3949647> in
> Maya, and it instantly crashed Maya, so I moved its guts into a simple
> example Maya window I found, and it works!
>
> So, here's the simplest example of QProcess that I got working within Maya:
> (Apologies if this is not the appropriate way to post code here...please
> let me know if I should do it differently in any way. I haven't looked into
> gist.github yet.)
>
> import subprocess
> import sip
> import maya.OpenMayaUI as mui
> from PyQt4 import QtCore, QtGui
>
>
> def getMainWindow():
>     pointer = mui.MQtUtil.mainWindow()
>     return sip.wrapinstance(long(pointer), QtCore.QObject)
>
> class BlockingTestWin(QtGui.QMainWindow):
>     def __init__(self, parent=None):
>         super(BlockingTestWin, self).__init__(parent)
>
>         self.mainWidget = QtGui.QWidget()
>         self.setCentralWidget(self.mainWidget)
>
>         #Main layout
>         self.layout = QtGui.QVBoxLayout()
>         self.mainWidget.setLayout(self.layout)
>
>         self.blocking_button = QtGui.QPushButton("Block")
>         self.blocking_button.clicked.connect(self.blocking)
>         self.layout.addWidget(self.blocking_button)
>
>         self.signal_button = QtGui.QPushButton("Signals")
>         self.signal_button.clicked.connect(self.non_blocking)
>         self.layout.addWidget(self.signal_button)
>
>         self.output = QtGui.QLineEdit()
>         self.layout.addWidget(self.output)
>
>         self.clear_button = QtGui.QPushButton("Clear")
>         self.clear_button.clicked.connect(self.output.clear)
>         self.layout.addWidget(self.clear_button)
>
>     def finished(self, returnCode):
>         self.setMessage("Return code: %s" % returnCode)
>
>     def setMessage(self, msg):
>         print msg
>         self.output.setText(msg)
>
>     def blocking(self):
>         self.setMessage("Starting blocking sleep")
>         process = subprocess.Popen(['python', '-c', 'import
> time\ntime.sleep(5)'])
>         ret = process.wait()
>         self.finished(ret)
>
>     def non_blocking(self):
>         self.setMessage("Starting non blocking sleep")
>         process = QtCore.QProcess(parent=self)
>         process.setProcessChannelMode(process.ForwardedChannels)
>         process.finished.connect(self.finished)
>         process.start('python', ['-c', 'import time\ntime.sleep(5)'])
>
> def run():
>     app = BlockingTestWin(getMainWindow())
>     app.show()
>
>
> On Tuesday, 14 January 2014 03:44:43 UTC+11, Ævar Guðmundsson wrote:
>>
>> If you run into further troubles, try explicitly directing your output
>> the the pipe buffer you want ( Maya uses both )
>>
>> print >> sys.stdout, "finished qprocess"
>> print >> sys.__stdout__, "finished qprocess"
>>
>>   Justin's method is better, just leaving this one as a note for further
>> experimentation, hope it helps and all that.
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Python Programming for Autodesk Maya" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/python_inside_maya/3fbd4c03-409f-4594-bb57-8ab9509d93dc%40googlegroups.com
> .
>
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA2NNBAi3xV583qSvQZcAkZgKjb450ePuq84WY1uy9FStw%40mail.gmail.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to