Ok es sind einige grundlegende Dinge, die ich nicht so richtig zu programmieren verstehe.
Ich habe im QtDesigner eine Oberfläche "mainwindow.ui" erstellt, diese enthält das Widget "widgetPainting".
Die *.ui-Datei habe ich anschließend zu einer *.py-Datei umgewandelt.
Diese sieht so aus:
Code: Alles auswählen
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButtonVorschau = QtWidgets.QPushButton(self.centralwidget)
self.pushButtonVorschau.setGeometry(QtCore.QRect(700, 10, 75, 23))
self.pushButtonVorschau.setObjectName("pushButtonVorschau")
self.widgetPainting = QtWidgets.QWidget(self.centralwidget)
self.widgetPainting.setGeometry(QtCore.QRect(300, 80, 450, 450))
self.widgetPainting.setAutoFillBackground(False)
self.widgetPainting.setObjectName("widgetPainting")
self.comboBoxRotortopologie = QtWidgets.QComboBox(self.centralwidget)
self.comboBoxRotortopologie.setGeometry(QtCore.QRect(30, 40, 161, 22))
self.comboBoxRotortopologie.setObjectName("comboBoxRotortopologie")
self.formLayoutWidget = QtWidgets.QWidget(self.centralwidget)
self.formLayoutWidget.setGeometry(QtCore.QRect(30, 80, 231, 471))
self.formLayoutWidget.setObjectName("formLayoutWidget")
self.formLayoutVariables = QtWidgets.QFormLayout(self.formLayoutWidget)
self.formLayoutVariables.setContentsMargins(0, 0, 0, 0)
self.formLayoutVariables.setObjectName("formLayoutVariables")
self.label_Rotortopologie = QtWidgets.QLabel(self.centralwidget)
self.label_Rotortopologie.setGeometry(QtCore.QRect(30, 20, 91, 16))
self.label_Rotortopologie.setObjectName("label_Rotortopologie")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButtonVorschau.setText(_translate("MainWindow", "Vorschau..."))
self.label_Rotortopologie.setText(_translate("MainWindow", "Rotortopologie"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Nun nutze ich zum "Aufruf" des MainWindows folgenden Code:
Code: Alles auswählen
import sys
#import PyQt5.QtCore as core
import PyQt5.QtWidgets as widgets
#import PyQt5.QtGui as gui
#import types #für method type
import mainwindow as mw
class MainWindowRotor(widgets.QMainWindow, mw.Ui_MainWindow):
def __init__(self, parent = None):
super(MainWindowRotor, self).__init__(parent)
self.setupUi(self)
def main():
app = widgets.QApplication(sys.argv)
mwr = MainWindowRotor()
mwr.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Ich verstehe es so, dass ich bestenfalls eine Klasse erstellen müsste, die das Widget "widgetPainting" beinhaltet und in welcher das paintEvent steht oder?
Wie mache ich das?
Ich weiß lediglich, wie ich Klassen für extra Fenster erstelle, jedoch nicht für ein Widget innerhalb eines Fensters.
Da die Positionierung des Widgets im QtDesigner einfacher zu handhaben ist, wollte ich das Widget auch nicht erst im Code erstellen.
Vielen Dank im Voraus.
Wäre für ein wenig Licht ins Dunkel sehr dankbar.