Code: Select all
import sys
import os
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QWidget, QMainWindow
from PyQt5 import uic
ui_content = '\
\
Form\
\
\
\
\
\
PushButton\
\
\
\
\
\
\
\
\
'
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = QMainWindow()
class MyCentralWidget(QWidget):
def __init__(self):
super().__init__()
import tempfile
tmp = tempfile.NamedTemporaryFile(delete=False)
tmp.write(ui_content.encode())
tmp.close()
self.ui = uic.loadUi(tmp.name,self)
self.ui.myButton.setText(self.ui.myButton.text() + " Foo")
self.myButton.setText(self.myButton.text() + " Bar")
os.remove(tmp.name)
centralWidget = MyCentralWidget()
mainWindow.setCentralWidget(centralWidget)
mainWindow.show()
app.exec()
Code: Select all
import sys
import os
from PySide6.QtWidgets import QApplication
from PySide6.QtWidgets import QWidget, QMainWindow, QVBoxLayout
from PySide6.QtUiTools import QUiLoader
from PySide6.QtCore import QFile
ui_content = '\
\
Form\
\
\
\
\
\
PushButton\
\
\
\
\
\
\
\
\
'
if __name__ == '__main__':
ui_loader = QUiLoader()
app = QApplication(sys.argv)
mainWindow = QMainWindow()
class MyCentralWidget(QWidget):
def __init__(self):
super().__init__()
import tempfile
tmp = tempfile.NamedTemporaryFile(delete=False)
tmp.write(ui_content.encode())
tmp.close()
uifile = QFile(tmp.name)
uifile.open(QFile.ReadOnly)
self.ui = ui_loader.load(uifile,self)
uifile.close()
# Needed to have self.ui be centered
self.mainLayout = QVBoxLayout(self)
self.mainLayout.addWidget(self.ui)
self.ui.myButton.setText(self.ui.myButton.text() + " Foo")
#self.myButton does not exist
#self.myButton.setText(self.myButton.text() + " Bar")
os.remove(tmp.name)
centralWidget = MyCentralWidget()
mainWindow.setCentralWidget(centralWidget)
mainWindow.show()
app.exec()
Ist das erwartet? Oder mache ich etwas falsch? Um alle Laufzeitprobleme zu beheben, duplizieren wir die Objekte: < /p>
Code: Select all
self.__dict__.update(self.ui.__dict__)