Hallo,
Ein kleines Problem mit events und datenaustausch.
In Prog_A wird eine instanz von Prog_B erzeugt.
In Prog_B werden Daten in einem ListCtrl angezeigt. Der event EVT_LIST_ITEM_SELECTED mit der funktion listctrl.GetItem(idx,0).GetText() liefert mir dann brav den ersten Eintrag des selectierten Items.
So weit, so gut. Nur kann ich die Daten nicht in Prog_B gebrauchen. Sie müssen in Prog_A weiterverarbeitet werden.
Wie sage ich jetzt Prog_A das in Prog_B ein event ausgelöst wurde. Ich muss praktisch in Prog_B einen event generieren den ich in Prog_A abfangen kann. (Denk ich mir mal so) Ich weis nur absolut nicht wie? Oder gibt es einen ganz anderen Weg?
event problem
Hoi,
klingt etwas wirr. Einfacher wäre es, wenn Du nicht versuchen würdest so abstrakt zu schreiben, nicht wahr? Code könnte, wie immer, helfen.
Aber zum Problem: Es klingt ein bißchen so wie Dein letztes Problem. Du erzeugst in Prog_A eine Instanz von Prog_B. Also ist Prog_A "parent" von Prog_B. Wenn man Dir nun einen guten Rat geben will, wäre es von Vorteil zu wissen, was genau Prog_B eigentlich ist. Aber nehmen wir einmal an es sei ein SingleChoiceDialog. Dann geht es z. B. so in Prog_A:
Wenn es sich um einen komplexeren Dialog handelt, KÖNNTE die Lösung analog zu diesem einfachen Beispiel funktionieren: Dein Prog_B braucht eine Methode auf die Prog_A zugreifen kann, um sich die Daten zu holen.
Wenn Dir diese Info nicht reicht, werde doch mal konkret und zeige etwas Code oder / und beschreibe weniger abstrakt, was Du eigentlich erreichen willst.
Gruß,
Christian
klingt etwas wirr. Einfacher wäre es, wenn Du nicht versuchen würdest so abstrakt zu schreiben, nicht wahr? Code könnte, wie immer, helfen.
Aber zum Problem: Es klingt ein bißchen so wie Dein letztes Problem. Du erzeugst in Prog_A eine Instanz von Prog_B. Also ist Prog_A "parent" von Prog_B. Wenn man Dir nun einen guten Rat geben will, wäre es von Vorteil zu wissen, was genau Prog_B eigentlich ist. Aber nehmen wir einmal an es sei ein SingleChoiceDialog. Dann geht es z. B. so in Prog_A:
Code: Alles auswählen
datasetsnames = [x.get_attribute('name') for x in self.active_datasets]
datasetdialog = wx.SingleChoiceDialog(self, 'Choose one data set:', '', datasetsnames, wx.CHOICEDLG_STYLE)
if datasetdialog.ShowModal() == wx.ID_OK:
selection = datasetdialog.GetStringSelection()
index = datasetsnames.index(selection)
self.selected = self.active_datasets[index]
else: return
Wenn Dir diese Info nicht reicht, werde doch mal konkret und zeige etwas Code oder / und beschreibe weniger abstrakt, was Du eigentlich erreichen willst.
Gruß,
Christian