Seite 1 von 1

Rückgabe aus Dialog

Verfasst: Montag 23. Oktober 2006, 07:31
von Byte
Hallo,

wie kann man Daten die in einem Dialog aus einem listCtrl ausgewählt wurden an das Hauptprogramm übergeben?

Bisheriges Vorgehen:
  • Dialog öffnen (funktioniert)
    Liste anzeigen (funktioniert)
    Zeile auswählen (funktioniert)
    Werte übergben (keine Ahnung)
    Dialog beenden (funkioniert)
In den wxPython Demos, habe ich bzgl. der Rückgabe aus einem Dialog nichts gefunden.

Wer kann mir einen Tip geben wie man das machen kann?

Danke

Christian

Verfasst: Montag 23. Oktober 2006, 07:53
von george
Hey Byte,

schau dir mal in den wxWidgets-Helpfiles folgendes an:
wxDialog::SetReturnCode
void SetReturnCode(int retCode)

Sets the return code for this window.

Parameters

retCode

The integer return code, usually a control identifier.
greets george

Verfasst: Montag 23. Oktober 2006, 08:30
von Byte
Hi George,

danke für deine schnelle Antwort, aber das ist nicht ganz das was ich brauche, ich will eine beliebige Variable übergeben.

Wenn ich z.B. einen Dialog mit einem TextCtrl habe, wie kann ich dann den Inhalt des TextCtrl im Hauptprogramm weiterverarbeiten?

Gruß Christian

Verfasst: Montag 23. Oktober 2006, 08:35
von Shana
Hey Byte,

ich würd an deiner Stelle einfach die Klasse Dialog beerben, dann kannst du ja den Rückgabewert selbst bestimmen.

Re: Rückgabe aus Dialog

Verfasst: Montag 23. Oktober 2006, 08:53
von gerold
Byte hat geschrieben:wie kann man Daten die in einem Dialog aus einem listCtrl ausgewählt wurden an das Hauptprogramm übergeben?
Hi Christian!

Hier die Instant-Version:

Code: Alles auswählen

#!/usr/bin/env python -O
# -*- coding: iso-8859-1 -*-

import wx


def main():
    app = wx.PySimpleApp()
    
    choices = ["erster", "zweiter"]
    diag = wx.SingleChoiceDialog(
        parent = None, message = "Bitte waehlen Sie aus", caption = "Auswahl",
        choices = choices
    )
    if diag.ShowModal() == wx.ID_OK:
        print choices[diag.GetSelection()]
    else:
        print "Abbruch"
    
    
if __name__ == "__main__":
    main()
mfg
Gerold
:-)

Verfasst: Montag 23. Oktober 2006, 09:08
von gerold
...und hier die Komfortversion:

Code: Alles auswählen

#!/usr/bin/env python -O
# -*- coding: iso-8859-1 -*-

import wx


class MyDialog(wx.Dialog):
    def __init__(
        self, parent = None, id = -1, title = "Auswahl", message = "Bitte waehlen Sie aus"
    ):
        wx.Dialog.__init__(self, parent, id, title)
        
        border_box = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(border_box)
        
        vbox = wx.BoxSizer(wx.VERTICAL)
        border_box.Add(vbox, 1, wx.ALL | wx.EXPAND, 5)
        
        lab = wx.StaticText(self, -1, message)
        vbox.Add(lab, 0, wx.ALL, 10)
        
        choices = ["erster", "zweiter"]
        self.choices = choices
        
        listbox = wx.ListBox(self, -1, choices = choices, size = (200, 100))
        vbox.Add(listbox, 1, wx.ALL | wx.EXPAND, 5)
        listbox.SetSelection(0)
        self.listbox = listbox
        
        border_box.Add(wx.StaticLine(self), 0, wx.EXPAND)
        
        hbox = wx.BoxSizer(wx.HORIZONTAL)
        border_box.Add(hbox, 0, wx.ALL | wx.EXPAND, 5)
        
        cmd_cancel = wx.Button(self, wx.ID_CANCEL, "Abbrechen")
        hbox.Add(cmd_cancel, 0, wx.ALL, 5)
        
        hbox.Add((0, 0), 1)
        
        cmd_ok = wx.Button(self, wx.ID_OK, "OK")
        hbox.Add(cmd_ok, 0, wx.ALL, 5)
        
        self.Fit()
    
    
    def get_selection(self):
        listbox = self.listbox
        choices = self.choices
        return choices[listbox.GetSelection()]
    

def main():
    app = wx.PySimpleApp()
    
    diag = MyDialog()
    
    if diag.ShowModal() == wx.ID_OK:
        print diag.get_selection()
    else:
        print "Abbruch"
    
    
if __name__ == "__main__":
    main()
mfg
Gerold
:-)

Re: Rückgabe aus Dialog

Verfasst: Montag 23. Oktober 2006, 18:46
von Byte
Hi Gerold,

danke, die Komfortversion war genau richtig. Habe es eingebaut und jetzt funktioniert es.

Christian