Seite 1 von 1

event problem

Verfasst: Donnerstag 9. November 2006, 00:15
von rkruggel
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?

Verfasst: Donnerstag 9. November 2006, 11:39
von CM
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:

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 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