Hallo Leute,
ich bin auf der Suche für das folgende Problem weder in den wxPython-Dokumentationen noch in der Forums-Suche auf eine Lösung gestoßen, obwohl es wahrscheinlich ganz einfach ist:
Ich möchte ein Fenster anzeigen, in dem der Nutzer bei den verschiedenen Optionen, die ich übergebe per Array, einen Haken setzen kann oder auch nicht. Die Anzahl an Optionen sollte hierbei variabel sein.
Das Proramm soll dann einfach ein Array zurücklieferen, in dem nach Drücken des OK-Knopfes das Ergebnis der einzelnen Checkboxen steht.
Mir sind aber bisher nur Beispiele begegnet, bei denen das Event abgefragt wird und daraufhin eine Aktion innerhalb des Fensters ausgeführt wird.
Zur Verdeutlichung der Ablauf, wie ich ihn mir vorstelle:
Funktionen aufrufen mit den anzuzeigenden Optionen
User wählt die gewünschten Optionen aus
User drückt OK-Button
Funktion liefert Array mit der Auswahl zurück
Wie müsste eine solche Funktion denn aussehen?
Vielen Dank,
MatMike
Eine Auswahl per Checkboxen und Rückgabe der Parameter
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi MatMike!matmike hat geschrieben:Funktionen aufrufen mit den anzuzeigenden Optionen User wählt die gewünschten Optionen aus
User drückt OK-Button Funktion liefert Array mit der Auswahl zurück
Willkommen im Python-Forum!
Hier ist eine der Möglichkeiten:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import wx
wx.SetDefaultPyEncoding("iso-8859-1")
class MyFrame(wx.Frame):
def __init__(
self, parent = None, id = -1, title = "Example", size = wx.Size(350, 220)
):
wx.Frame.__init__(self, parent, id, title, size = size)
# Panel
panel = wx.Panel(self)
# Haupt-Sizer
vbox_main = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(vbox_main)
# Spreizer
vbox_main.Add((0, 0), 1)
# Button
btn_klickmich = wx.Button(panel, -1, "Klick mich...")
vbox_main.Add(btn_klickmich, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5)
btn_klickmich.Bind(wx.EVT_BUTTON, self.show_selected_values)
# Spreizer
vbox_main.Add((0, 0), 1)
def show_selected_values(self, event = None):
selected_list = self.ask_for_values()
message = u"Hier sind die ausgewählten Werte:\n\n"
message += ",".join(selected_list)
wx.MessageBox(message, "Werte")
def ask_for_values(self):
"""
Zeigt einen MultiChoiceDialog an und gibt die Auswahl als Liste zurück.
"""
choices = ["a", "b", "c", "d"]
diag = wx.MultiChoiceDialog(
self, u"Bitte wähle aus.", "Auswahl", choices = choices
)
if diag.ShowModal() == wx.ID_OK:
selected_list = []
for index in diag.GetSelections():
selected_list.append(choices[index])
return selected_list
else:
return []
def main():
"""Testing"""
app = wx.PySimpleApp()
f = MyFrame()
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hi Gerold,
vielen Dank für das ausführliche Skript, es tut genau das, was ich mir wünsche.
Eine Frage dazu habe ich aber (natürlich
) noch: Kann es sein, dass die Checkboxen in Python 2.3 nocht nicht dargestellt werde, sondern es hier nur Elemente in einer Liste sind, die mit Shift und/oder Strg ausgewählt werden und Python 2.5 daraus echte Checkboxen macht? In der Anwendung, in der ich das Ganze integriert habe, werden nämlich nur die Einträge angezeigt und müssen per Shift/Strg ausgewählt werden. Die Anwendung beinhaltet eine DLL namens python23.dll, in der vermutlich auch wx mit integriert ist.
Danke,
MatMike
vielen Dank für das ausführliche Skript, es tut genau das, was ich mir wünsche.
Eine Frage dazu habe ich aber (natürlich

Danke,
MatMike