Reputation: 13
I'm trying to load a UI with PyQt but saving the "data" in a string, like, save XML data in a string, to use loadUi()
Example:
template = '''
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>... (and more code)
'''
So, actually I'm using this code:
class Install(QtWidgets.QMainWindow):
def __init__(self):
super(Install, self).__init__()
uic.loadUi(template, self)
Upvotes: 1
Views: 583
Reputation: 243993
You can use io.StringIO()
:
import io
import sys
from PyQt5 import QtWidgets, uic
template = """<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>28</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>"""
class Install(QtWidgets.QMainWindow):
def __init__(self):
super(Install, self).__init__()
f = io.StringIO(template)
uic.loadUi(f, self)
def main():
app = QtWidgets.QApplication(sys.argv)
install = Install()
install.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
Upvotes: 2