Qt5 Zwischen Fenstern wechseln / Steuerung von Window1 aus Window2
Verfasst: Mittwoch 20. Januar 2021, 14:47
Hi zusammen,
ich habe ein Haupt-Gui und öffne daraus per pushbutton ein neues Window:
dort füllt man einen QTable und den schicke ich an ein Funktion über connect zurück:
Gleichzeitig schließt sich das Fenster "FCTpopup". Der Slot ist in dieser Funktion und legt den Array einfach in einer Variable ab:
Jetzt möchte ich eigentlich nur eine triviale Sache hinzu fügen und zwar, dass sich nicht mehrere Instanzen vom FCTpopup öffnen können wenn man enter_fct_results() mehrfach aufruft. da dachte ich, packste einfach self.ui.pushbuttonFillArray.setEnabled(0) hinzu und entweder im return mit dem schließen vom FCT_window soll der Button wieder enabled werden aber ich bekomme immer fehler. Ich konnte self.ui.pushbuttonFillArray.setEnabled(1) auch nicht in "def store_fct_data" integrieren.
Könnt ihr sehen woher das kommen kann? Datenaustausch geht 1a aber wenn ich von einem Fenster die QWidgets oder so ansprechen will, hab ich noch nciht ganz verstanden wie man das machen muss. Ich lese in foren immer wieder wie toll die Qt Dokumentation ist, aber das kann ich noch nicht zu 100% nachvollziehen. Vll könnt ihr mir helfen.
ich habe ein Haupt-Gui und öffne daraus per pushbutton ein neues Window:
Code: Alles auswählen
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow() # sets ui = to the main window from the ui-file
self.ui.setupUi(self)
[...]
def enter_fct_results(self):
self.FCTpopup = FCT_Window()
self.FCTpopup.show()
Code: Alles auswählen
class FCT_Window(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.ui = Ui_FCT_Window()
self.ui.setupUi(self)
[...]
def on_submit(self): # event when user clicks
fct_nparray = np.zeros((self.ui.tableFCTinputs.rowCount(), self.ui.tableFCTinputs.columnCount()))
for j in range(self.ui.tableFCTinputs.columnCount()):
for i in range(self.ui.tableFCTinputs.rowCount()):
fct_nparray[i, j] = float(self.ui.tableFCTinputs.item(i, j).text())
return fct_nparray, lambda: self.close()
Code: Alles auswählen
self.ui.pushButton_submitFCT.clicked.connect(lambda: MainWindow.store_fct_data(MainWindow, self.on_submit()[0]))
Code: Alles auswählen
def store_fct_data(self, data):
self.fct_data = data
Code: Alles auswählen
self.ui.pushButton_FCTresults.setEnabled(1)
self.ui.pushButton_submitFCT.clicked.connect(lambda: MainWindow.store_fct_data(MainWindow, self.on_submit()[0]))
AttributeError: type object 'MainWindow' has no attribute 'ui'