Python in Maya:
http://www.chadvernon.com/blog/resources/python-scripting-for-maya-artists/
PyQt examples:
http://diotavelli.net/PyQtWiki/Tutorials - A collection of PyQt tutorial websites.
http://zetcode.com/tutorials/pyqt4/ - One of my favourites. Note: These are written as standalone applications so won't work in Maya if you copy/paste. Just run these examples in IDLE or interpreter of your choice. This is what causes Maya to stall:
def main(): app = QtGui.QApplication(sys.argv) ex = Example() sys.exit(app.exec_())Maya already has it's own QApplication running when it opens, so creating a new one isn't necessary.
Maya PyQt window:
First up, let's start with a simple PyQt window in Maya that has a button which prints out a message!
Paste this into Maya:
from PyQt4 import QtGui # inherit QtGui.QMainWindow class class Main(QtGui.QMainWindow): def __init__(self, parent=None): # runs __init__ in QMainWindow first, then overrides with Main super(Main, self).__init__(parent) # make a central widget self.centralWidget = QtGui.QWidget(self) # attach widget to the PyQt window self.setCentralWidget(self.centralWidget) # set the window title self.setWindowTitle("PyQt window") # setup UI method self.setup_UI() # this method add things to the QMainWindow def setup_UI(self): # make a vertical box layout and set it's parent to the central widget self.mainLayout=QtGui.QVBoxLayout(self.centralWidget) # make a button helloButton=QtGui.QPushButton("Hello") # connect button's click slot to say_hello method helloButton.clicked.connect(self.say_hello) # add the button to the main layout self.mainLayout.addWidget(helloButton) # set the QMainWindow's height and width to be fixed with given integers self.setFixedWidth(200) self.setFixedHeight(40) # bind this layout to QMainWindow self.setLayout(self.mainLayout) # make a print method def say_hello(self, *args): print "Hello, Maya!" # show the window! myWindow=Main() myWindow.show()
There you have it! An example of displaying a simple PyQt window in Maya. Over the next couple of weeks I'd like write about some of the following topics:
- How to work with a QTreeWidget
- Mixing PyQt and Maya UI (reparenting windows and scripted panels)
- Custom right click menus on QWidgets
- Adding popup windows
- Parenting to Maya's window explanation