ich häng seit gestern an einem Fehler. Baue grad zum ersten mal in QT für Python eine GUI, hatte vorher von der Uni aus mal mit QT in C++ gearbeitet. Die Basics mit signals und slots und wieso man sie braucht habe ich (glaube ich) verstanden. Jetzt treten aber Fehler auf, die ich nicht ganz nachvollziehen kann:
Ich kann ein selbst erstelltes Signal nicht ausgeben (gui_controller.py, letzte Zeile). AttributeError: 'PySide6.QtCore.Signal' object has no attribute 'emit'
Hier ein kleiner Ausschnitt aus dem Code, mit dem sich der Fehler reproduzieren lassen sollte:
main.py:
Code: Alles auswählen
"""Init everything that is necessary to run the application."""
# pylint --extension-pkg-allow-list=PySide6
import sys
from gui_modules.gui_controller import GUIController
from PySide6 import QtWidgets
def main():
"""Init and run the application."""
app = QtWidgets.QApplication([])
gui_controller = GUIController()
sys.exit(app.exec())
if __name__ == '__main__':
main()
Code: Alles auswählen
"""Save currently selected objects and button states."""
# pylint --extension-pkg-allow-list=PySide6
from PySide6 import QtWidgets
from PySide6.QtCore import Signal
class GUIController(QtWidgets.QWidget):
"""The GuiController class."""
def __init__(self) -> None:
"""Populate the current instance."""
super().__init__()
self.sig_added_category_and_subcategory = Signal()
self.sig_added_category_and_subcategory.emit()
Kann mir jemand sagen, was ich falsch mache? In der Dokumentation hab ich es eigentlich genau so gesehen wie ich es hier mache.
Und noch eine Frage zur Vererbung:
hier habe ich auch Probleme; hab einige Klassen, die von QtWidgets.QtGridLayout erben, diese kann ich dann nicht per self.addWidget einem anderen Objekt, das ebenfalls von QtWidgets.QtGridLayout erbt, hinzufügen (Falsche Signatur weils ja eine andere Klasse ist; sollte aber eig genauso hinzugefügt werden können, oder? Oder wie funktioniert subclassing sonst?).
Falls jemand da auch grad eine schnelle Lösung parat hat wäre ich sehr dankbar wenn ihr mir das erklären könntet. Ansonsten kann ich dafür auch ein eigenes Thema aufmachen/vllt klärt sich das auch wenn das erste Problem beantwortet wurde (auch wenn ich nicht wüsste wie das zusammenhängen könnte).
Viele Grüße und danke schonmal für eure Hilfe!
Jakob