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