Seite 1 von 1

Upgedatete Werte von dictionary werden nicht an Klasse übergeben

Verfasst: Donnerstag 28. Januar 2021, 10:21
von dasilva_stefan
In der __init__ Funktion erstelle ich ein dictionary. Anschliessend update ich die Values meines dictionarys. Das Problem dabei ist, dass die upgedateten Values nicht an meine Klasse übergeben werden.
Wenn ich in der Klasse die übergebenen Werte printe, dann sehe ich, dass es die default Werte sind, die ich bei der Erstellung angegeben habe.

Kann mir jemand diesbezüglich helfen?

Vielen Dank

Re: Upgedatete Werte von dictionary werden nicht an Klasse übergeben

Verfasst: Donnerstag 28. Januar 2021, 11:36
von __deets__
Ohne Code leider nicht. Bitte dazu auch die Code Tags benutzen.

Re: Upgedatete Werte von dictionary werden nicht an Klasse übergeben

Verfasst: Donnerstag 28. Januar 2021, 13:41
von dasilva_stefan
[class GUI(QMainWindow):
def __init__(self, app, thread):
super(GUI, self).__init__()

self.app = app
self.thread = thread
self.ui = Ui_GUI()
self.ui.setupUi(self)
self.setWindowTitle('Projekt AD Stefan da Silva')
self.setMinimumSize(QSize(800, 500))
self.centerPoint = QDesktopWidget().availableGeometry().center()
self.qtRectangle = self.frameGeometry()
self.qtRectangle.moveCenter(self.centerPoint)
self.move(self.qtRectangle.topLeft())

# Config
self.config = ConfigParser()

self.param_dict = {
'samples': 0,
'faktor': 0,
'offset': 0,
'perioden': 0,
'anteile': False
}

self.signale = SignalBase(self.param_dict['samples'],
self.param_dict['perioden'],
self.param_dict['offset'])

self.fourier = np.zeros(self.param_dict['samples'])
self.single_fourier = []

self.update_dictionary()]

[def update_dictionary(self):
self.param_dict['samples'] = int(self.ui.EnterSamples.text())
self.param_dict['faktor'] = int(self.ui.EnterFactor.text())
self.param_dict['offset'] = int(self.ui.EnterOffset.text())
self.param_dict['perioden'] = int(self.ui.EnterPeriods.text())
self.param_dict['anteile'] = bool(self.ui.ShowParts.checkState())

self.signale.samps = self.param_dict['samples']
self.signale.periods = self.param_dict['perioden']
self.signale.offset = self.param_dict['offset']

item = self.ui.SignalList.item
cnt = 0

for sinus in self.signale.sine_signals:
sinus.amp = float(item(cnt).widget.ui.EnterAmp.text())
sinus.freq = float(item(cnt).widget.ui.EnterFreq.text())
sinus.pha = float(item(cnt).widget.ui.EnterPhase.text())
cnt += 1
[class SignalBase:
def __init__(self, samples, periods, offset):
# print('init')
print('samples' + ' ' + str(samples))
self.sine_signals = [] # Signalvektor
self.samples = samples # Anzahl Samples
self.periods = periods # Anzahl Perioden
self.offset = offset # Offset
self.return_signal = np.zeros(self.samples) # Return
self.samp_points = np.arange(0, self.samples, 1) # Samplingpoints
self.time_vec = np.zeros(self.samples) # Zeitvektor
self.ground_freq = None # Grundfrequenz
self.time_period = None # Betrachtete Zeitspanne
self.dt_sp = None # Zeit zwischen zwei Samplingpoints]
__deets__ hat geschrieben: Donnerstag 28. Januar 2021, 11:36 Ohne Code leider nicht. Bitte dazu auch die Code Tags benutzen.

Re: Upgedatete Werte von dictionary werden nicht an Klasse übergeben

Verfasst: Donnerstag 28. Januar 2021, 13:47
von Sirius3
Da fehlen die Importe und wie Du die Klassen benutzt.
Woher merkst Du, dass sich das Wörterbuch nicht "geupdated" wird?

Wenn Du meinst, dass die Attribute in SignalBase sich nicht ändern: warum sollten sie auch, woher soll denn das Programm wissen, dass die Argumente ursprünglich mal in einem Wörterbuch standen?

Re: Upgedatete Werte von dictionary werden nicht an Klasse übergeben

Verfasst: Donnerstag 28. Januar 2021, 13:56
von dasilva_stefan
Sirius3 hat geschrieben: Donnerstag 28. Januar 2021, 13:47 Da fehlen die Importe und wie Du die Klassen benutzt.
Woher merkst Du, dass sich das Wörterbuch nicht "geupdated" wird?

Wenn Du meinst, dass die Attribute in SignalBase sich nicht ändern: warum sollten sie auch, woher soll denn das Programm wissen, dass die Argumente ursprünglich mal in einem Wörterbuch standen?
Die Importe habe ich alle gemacht und ich kriege auch keine Fehlermeldungen. Ich habe bei der SignalBase Klasse einen print Befehl, der mir die Werte anzeigt.

Ebenfalls übergebe ich der Klasse die Values des Dictionarys
[self.signale = SignalBase(self.param_dict['samples'], self.param_dict['perioden'], self.param_dict['offset'])]

Re: Upgedatete Werte von dictionary werden nicht an Klasse übergeben

Verfasst: Donnerstag 28. Januar 2021, 14:34
von __deets__
Wenn du argument aus dem Wörterbuch puhlst und explizit übergibst, dann werden Änderungen des Wörterbuch nicht weiter Einfluss haben. Da müsstest du das Wörterbuch selbst übergeben.