GUI Event, Variable speichern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
python_lukas25
User
Beiträge: 2
Registriert: Freitag 19. März 2021, 16:06

Hi,

ich habe eine kleine GUI mit dem Designer erstellt und möchte 2 Variablen über LineEdit einlesen.
Diese zwei Werte dann außerhalb der Klasse in der Main Funktion Variablen zuweisen. Diesen Schritt bekomme ich nicht hin...
Zum Schluss sollen die Werte in eine Excel geschrieben werden. Die wichtigsten Schritte zeige ich hier mal.

Code: Alles auswählen

from openpyxl import load_workbook
import pandas as pd
import sys
from PyQt5 import QtGui, QtWidgets
from PyQt5 import QtCore

class Ui_MainWindow(object):

    def setupUi(self, push_button):
     	self.lineEdit_var1 = QtWidgets.QLineEdit(push_button)
     	self.lineEdit_var2 = QtWidgets.QLineEdit(push_button)
     	self.pushButton.clicked.connect(self.user_input)
     	
    def user_input(self):

        self.var1_neu = self.lineEdit_var1.text()
        self.var2_neu = self.lineEdit_var2.text()
        
if __name__ == '__main__':

    wb_1 = load_workbook('C:\\filename.xlsx')
    ws_1 = wb_1.active
    
    dataframe = pd.read_excel(filename, header=1)
    
     app = QtWidgets.QApplication(sys.argv)
    Main_Window = QtWidgets.QWidget()
    ui = Ui_MainWindow()
    ui.setupUi(Main_Window)
    Main_Window.show()
    
    ws_1['A1'] = ui.var1_neu
    ws_1['A2] = ui.var2_neu
    
    wb_1.save(filename2)
    sys.exit(app.exec_())    
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

So funktionieren GUIs nicht. Wie soll denn jemand etwas in die LineEdits eingeben können, wenn Du noch nicht app.exec_ aufgerufen hattest?
user_input wird zumden nie aufgerufen.
Das übliche ist es, einen Save-Button zu haben, und wenn der Gedrückt wird, schreibst Du in der entsprechenden Funktion in Deine Excel-Datei.
python_lukas25
User
Beiträge: 2
Registriert: Freitag 19. März 2021, 16:06

Danke für die Antwort. Ich bin mir nicht ganz sicher ob ich dich verstehe. Ich zeige hier nur ein Teilausschnitt meiner GUI, die ich mit dem gui designer erstellt habe.
An sich funktioniert alles, ich kann alles eingeben, die Funktion wird aufgerufen (über print Ausgabe geprüft).
Nur das Speichern in der Excel funktioniert nicht, wie würde so ein Save Button aussehen?
Soweit ich weiß heißt "sys.exit(app.exec_())" = Programm schließen, nachdem die GUI geschlossen wurde...
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Nein; ›sys.exit(app.exec_())‹ bedeutet, führe die GUI aus; davor werden nur die Fenster initialisiert, danach passiert nichts mehr.
Antworten