Qt window class for designing tools to be compatible between multiple VFX programs.
Qt Window class for designing tools to be compatible between multiple VFX programs.
The main purpose of the class is to integrate into the program UI, but it also contains helpful features such as safely dealing with callbacks and automatically saving the window position.
The intended usage is to make your window class inherit
VFXWindow - which is an instance of
QMainWindow. By calling
cls.show(), it will launch the correct window type based on what program is loaded, and what settings were previously saved.
This is perfectly stable, but there is still plenty that needs improvement. Maya, Nuke, 3DS Max, Houdini, Blender, Substance Designer, Unreal and Fusion are currently supported, though any help to extend those would be appreciated, as well as support for any other applications.
pip install vfxwindow
class MyWindow(VFXWindow): WindowID = 'unique_window_id' WindowName = 'My Window' def __init__(self, parent=None, **kwargs): super(MyWindow, self).__init__(parent, **kwargs) # Setup window here # Setup callbacks, but wait until the program is ready self.deferred(self.newScene) def newScene(self, *args): """Example: Delete and reapply callbacks after loading a new scene.""" self.removeCallbacks('sceneNewCallbacks') if self.maya: self.addCallbackScene('kAfterNew', self.newScene, group='sceneNewCallbacks') elif self.nuke: self.addCallbackOnCreate(self.newScene, nodeClass='Root', group='sceneNewCallbacks') if __name__ == '__main__': MyWindow.show()
Support / Compatibility
✔️ Working / ❔ Untested / ❌ Not Working
|Standard Window||Docked Window||Callbacks||Tested Versions||Linux||Windows||MacOs|
|Unreal Engine||✔️||❌||❌||4.19-4.23, 5.0-5.3||❌||✔️||❔|
|Substance Designer||✔️||✔️||❌||2019.3, 7.1, 12.3||✔️||✔️||❔|
|Standalone Python||✔️||2.7 (Qt4), 3.7-3.9 (Qt5)||❔||✔️||❔|
- Automatically save/restore window position
- Move window to screen if out of bounds (windows only)
- Keep track of callbacks to remove groups if required, and clean up on window close
- Keep track of signals to remove groups if required
- Display a popup message that forces control
- Set palette to that of another program
- Auto close if opening a duplicate window
- Close down all windows at once
- Create dialog windows automatically attached to the application (and return data)
Running with Non-Python Applications
Certain Windows applications have dispatch based COM interface, which will allow a link between Python and the application. See photoshop-scripting-python for an example on how to connect to an application.
Currently there is no way of launching
VFXWindow from inside these applications.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.