Seite 1 von 1

Erste Gehversuche mit QtCreator auf macOS

Verfasst: Donnerstag 21. Oktober 2021, 17:10
von wernerbarz
Ich versuche mich zum ersten Mal an dem QtCreator.
Habe mal ein kleines Programm mit dem Creator erstellt:

Code: Alles auswählen

# This Python file uses the following encoding: utf-8
import os
from pathlib import Path
import sys

from PySide2.QtWidgets import QApplication, QMainWindow
from PySide2.QtCore import QFile
from PySide2.QtUiTools import QUiLoader
from PySide2 import QtCore

QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_DontCheckOpenGLContextThreadAffinity)
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_ShareOpenGLContexts)


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.load_ui()
        
    def load_ui(self):

        path = os.fspath(Path(__file__).resolve().parent / "mainwindow.ui")
        ui_file = QFile(path)
        ui_file.open(QFile.ReadOnly)
        loader = QUiLoader()
        loader.load(ui_file, self)
        ui_file.close()


if __name__ == "__main__":
    app = QApplication([])
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())
Damit bekomme ich aber immer nur ein kleines, leeres Fenster angezeigt und nicht mein "mainwindow.ui", welches ich mit dem QtDesigner erstellt habe.
Kann jemand helfen?

Re: Erste Gehversuche mit QtCreator auf macOS

Verfasst: Donnerstag 21. Oktober 2021, 18:51
von Sirius3
QUiLoader.load liefert ein widget, mit dem Du aber nichts machst.
Wenn die Datei mainwindow.ui heißt, ist da wahrscheinlich ein komplettes QMainWindow definiert:

Code: Alles auswählen

import sys
from pathlib import Path
from PySide2.QtWidgets import QApplication
from PySide2.QtUiTools import QUiLoader

class MainWindow():
    def __init__(self):
        path = str(Path(__file__).parent / "mainwindow.ui")
        self.widget = QUiLoader().load(path)

    def show(self):
        self.widget.show()


def main():
    app = QApplication([])
    main = MainWindow()
    main.show()
    sys.exit(app.exec())


if __name__ == "__main__":
    main()

Re: Erste Gehversuche mit QtCreator auf macOS

Verfasst: Donnerstag 21. Oktober 2021, 19:29
von wernerbarz
Super! Vielen Dank für die schnelle Hilfe!
Manchmal ist die (Python)Welt mit Brettern vernagelt... :) :wink:
Jetzt läuft es erstmal, wie ich es mir vorgestellt habe.
Nochmals Danke.

Re: Erste Gehversuche mit QtCreator auf macOS

Verfasst: Freitag 22. Oktober 2021, 11:18
von wernerbarz
So, habe nun versucht, auf ein QLabel mit dem QObject 'label_quickView' in mainwindow.ui zuzugreifen. Leider ohne Erfolg...
Was mache ich falsch?

Code: Alles auswählen

# This Python file uses the following encoding: utf-8
import os
from pathlib import Path
import sys

from PySide2.QtWidgets import QWidget, QApplication, QMainWindow
from PySide2.QtCore import QFile
from PySide2.QtUiTools import QUiLoader
from PySide2 import QtCore


QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_DontCheckOpenGLContextThreadAffinity)
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_ShareOpenGLContexts)


class MainWindow():
    def __init__(self):       
        path = str(Path(__file__).parent / "mainwindow.ui")
        self.widget = QUiLoader().load(path)

    def show(self):
        self.widget.show()


def main():
    app = QApplication([])
    my_main = MainWindow()
    my_main.show()
    my_main.label_quickView.setText("Hallo Welt")
    sys.exit(app.exec_())


if __name__ == "__main__":
    main()
Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "/Users/wernerbarz/PycharmProjects/MissionCreator_neu/mainwindow_neu.py", line 35, in <module>
    main()
  File "/Users/wernerbarz/PycharmProjects/MissionCreator_neu/mainwindow_neu.py", line 30, in main
    my_main.label_quickView.setText("Hallo Welt")
AttributeError: 'MainWindow' object has no attribute 'label_quickView'

Process finished with exit code 1
Ist aber definitiv drin...

Re: Erste Gehversuche mit QtCreator auf macOS

Verfasst: Freitag 22. Oktober 2021, 11:52
von __deets__
Das windo hast du doch widget genannt. Da musst du schon drüber hin auf deine Widgets zugreifen. Wie du es ja auch mit show machst.

Re: Erste Gehversuche mit QtCreator auf macOS

Verfasst: Freitag 22. Oktober 2021, 14:58
von wernerbarz
Danke für die Hilfe.
Wie ich schon oben schrieb: "Meine ersten Gehversuche..."
Jetzt bin ich wieder einen Schritt weiter.