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 PySide2 or PyQt5 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.

  • 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.

  • Pyside Documentation (Deprecated) - Although this is deprecated, the documentation for Qt classes is pretty good. The newer PySide2 documentation is not as complete as this documentation.

  • 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.

  • 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).