Skip to content

Instantly share code, notes, and snippets.

@altendky

altendky/bad3.py Secret

Created August 4, 2019 16:28
Show Gist options
  • Save altendky/325d0737a923e6f678617364e0f68f83 to your computer and use it in GitHub Desktop.
Save altendky/325d0737a923e6f678617364e0f68f83 to your computer and use it in GitHub Desktop.
import io
import sys
import PyQt5.QtCore
import PyQt5.QtWidgets
import PyQt5.uic
import sip
system_info = f'''\
sys.version: {sys.version}
sys.platform: {sys.platform}
QT_VERSION_STR: {PyQt5.QtCore.QT_VERSION_STR}
PYQT_VERSION_STR: {PyQt5.QtCore.PYQT_VERSION_STR}
SIP_VERSION_STR: {sip.SIP_VERSION_STR}'''
ui_text = '''\
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="MyWidget" name="Form">
<layout class="QVBoxLayout" name="layout">
</layout>
</widget>
<customwidgets>
<customwidget>
<class>MyWidget</class>
<extends>QWidget</extends>
<header>bad3</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>
'''
class MyWidget(PyQt5.QtWidgets.QWidget):
pass
def main():
print(system_info)
app = PyQt5.QtWidgets.QApplication([])
Ui, UiBase = PyQt5.uic.loadUiType(io.StringIO(ui_text))
if __name__ == '__main__':
main()
#exec(code_string.getvalue(), ui_globals)
#ui_base = ui_globals.get(winfo["baseclass"])
#if ui_base is None:
#ui_base = getattr(QtWidgets, winfo["baseclass"])
#return (ui_globals[winfo["uiclass"]], ui_base)
~/st.src   boots ●  venv/bin/python bad3.py
sys.version: 3.7.4 (default, Aug 2 2019, 12:58:45)
[GCC 6.3.0 20170516]
sys.platform: linux
QT_VERSION_STR: 5.13.0
PYQT_VERSION_STR: 5.13.0
SIP_VERSION_STR: 4.19.18
Traceback (most recent call last):
File "bad3.py", line 50, in <module>
main()
File "bad3.py", line 46, in main
Ui, UiBase = PyQt5.uic.loadUiType(io.StringIO(ui_text))
File "/home/altendky/st.src/venv/lib/python3.7/site-packages/PyQt5/uic/__init__.py", line 204, in loadUiType
return (ui_globals[winfo["uiclass"]], getattr(QtWidgets, winfo["baseclass"]))
AttributeError: module 'PyQt5.QtWidgets' has no attribute 'MyWidget'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment