I took a quick look
The following code:
from PyQt5.Qt import *
print("Qt version:", QT_VERSION_STR)
print("PyQt version:", PYQT_VERSION_STR)
return 5.13.1 on Linux appimage 4.4.2b1 for PyQt
return 5.13.1 on Linux appimage 4.4.1 for PyQt
return 5.13.1 on Windows for PyQt
version 5.12.9 is returned for all environments for Qt version
import sys
print(sys.version)
On both environment, I retrieve 3.8.1
On Linux appimage 4.4.2b1, it’s dated from 2020/11/20
On Linux appimage 4.4.1, it’s dated from 2020/10/26
And on windows 2019/12/18
So, there’s some difference between libraries, not sure about impact between Qt/PyQt version
Concerning the plugin, I’ve made some quick test.
I had the bug one time, but was not possible to reproduce it…
(using appimage 4.4.2 on Debian)
I’ll install a kubuntu later to test if there’s a difference
I have one other bug:
File "/home/grum/.local/share/krita/pykrita/kritapluginpiemenu/MenuArea.py", line 347, in getCurrentPosition
return QPoint(position.x() - screen.geometry().x(), position.y() - screen.geometry().y())
AttributeError: 'NoneType' object has no attribute 'geometry'
When cursor reach bound of monitor, returned screen is None and then script return an error
=> everywhere you use screen = QGuiApplication.screenAt() you should check if returned screen is set or not before using it
Possible improvements
In menu interface, depending of current tool used, when the menu is displayed, there’s no visible cursor (occurs with brush tool)
Maybe force cursor to be visible when menu is displayed, can be useful especially when you work with a mouse 
In settings, when you decide to change number of menu (set from 3 to 4, or 4 to 3 for example) you loose the current configuration (here, there’s a reset on the first 3 configuration slot)
It’s boring to redefine everything 
Also, when creating a sub-menu, let user define name of menu rather having a tool’s name could be a good thing
Grum999