Example Xi-CAM Plugins


  • Try GitHub - Landing page for some introductions and resources about git and GitHub.

  • Git Handbook - An introduction to git and GitHub.


Useful resources about NSLS-II software that Xi-CAM uses.


Here are a few resources regarding object-oriented programming with Python3. Feel free to look through these or even through resources you find on your own if you are interested.


Qt is a framework written in C++ for developing graphical user interfaces. PySide2 and PyQt5 are two different python bindings to the Qt C++ API. QtPy is a wrapper that allows for writing python Qt code with either PyQt5 or PySide2 installed.

Xi-CAM uses QtPy to interact with different Python bindings to Qt. QtPy allows you “to write your code as if you were using PySide2 but import Qt modules from qtpy instead of PySide2 (or PyQt5)”. The references below show PySide2 examples and documentation; when writing a Xi-CAM plugin, make sure to use the qtpy modules when importing.

  • PySide2 Documentation - Documentation for PySide2. Since the QtPy API resembles PySide2, this documentation is helpful for looking up python Qt modules and classes that you may use.

  • PyQt5 GUI Tutorial - Introductory tutorial for learning the basic concepts of Qt. Note: this tutorial is written for PyQt5, remember to import from qtpy instead of PyQt5 or PySide2 when writing code for Xi-CAM.

  • PySide2 Simple Clickable Button - Short tutorial that describes the concept of signals and slots in Qt and shows how to create a button that responds to clicking.

  • PyQtGraph - Documentation for the pyqtgraph package, which relies on Qt and provides basic data visualization (plotting) and various widgets (helpful for writing Xi-CAM GUIPlugins).