You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/source/development/development.rst
+24Lines changed: 24 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -139,3 +139,27 @@ should look like this:
139
139
working on that branch. The rebasing process re-writes the commit history so
140
140
any other checkout of the same branch referring to the old history will
141
141
create duplicates of all the commits.
142
+
143
+
Qt Wrapper Dependent Code
144
+
===========================
145
+
PyDM is written in Python using wrappers around the C++ Qt library. PyDM currently supports two different python wrappers: PyQt5 and PySide6.
146
+
PyQt5 runs on the older Qt version Qt5, and PySide6 runs the on the newest Qt version Qt6.
147
+
But atm, the functionality of PyDM should be the same regardless of if PyQt5 or PySide6 is used.
148
+
149
+
PyDM also runs on-top of an abstraction layer called "qtpy" (https://github.com/spyder-ide/qtpy), which ideally allows for a codebase to run
150
+
on both PyQt and PySide6 without any wrapper-specific modifications.
151
+
152
+
But in reality, there are still places in the PyDM codebase where it was needed to implement
153
+
PyQt5/PySide6 specific code, either b/c qtpy was lacking an abstraction around certainn Qt features
154
+
or b/c the code worked abstraction layer in the past and is difficult to change.
155
+
156
+
These wrapper-specific sections are noted in the codebase by the ``@QT_WRAPPER_SPECIFIC`` string. There are also comments in
157
+
these sections explaining the differences between the PyQt and Pyside6 implementations.
158
+
159
+
When changing code marked with ``@QT_WRAPPER_SPECIFIC``, developers must take special care to ensure their changes work on both PyQt and PySide6.
160
+
It should be the case that automated testing on GitHub will run with both wrappers before any code is merged.
161
+
But, if changing a ``@QT_WRAPPER_SPECIFIC`` section it's recommended to have setup a conda environments with both PyQt and
162
+
PySide6 installed so you can test PyDM locally with both wrappers. Also, ew sections of PyQt5/PySide6 specific code should also marked with the ``@QT_WRAPPER_SPECIFIC`` string.
163
+
164
+
If any new features are added to PyDM that utilize new Qt6 functionality (and therefore will only work on PySide6),
165
+
these sections should also get denoted with the ``@QT_WRAPPER_SPECIFIC`` string.
Copy file name to clipboardExpand all lines: examples/README.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,11 @@
1
1
# pydm-examples: Python Display Manager Examples
2
-
[PyDM](https://github.com/slaclab/pydm) is a PyQt-based framework for building user interfaces for control systems. The goal is to provide a no-code, drag-and-drop system to make simple screens, as well as a straightforward python framework to build complex applications.
2
+
[PyDM](https://github.com/slaclab/pydm) is a Python-Qt based framework for building user interfaces for control systems. The goal is to provide a no-code, drag-and-drop system to make simple screens, as well as a straightforward python framework to build complex applications.
3
3
4
4
# Prerequisites for the examples
5
-
* Python 3.6+
5
+
* Python 3.10+
6
6
* pydm
7
7
* Qt 5.7 or higher
8
-
* PyQt5 >= 5.7
8
+
* PyQt5 >= 5.7 or PySide6 6.9
9
9
* pcaspy (Optional)
10
10
pcaspy is needed for the `pydm-testing-ioc` used in most of the examples.
0 commit comments