wxpython equivalent zu Tkinter(OptionMenu) gesucht

Plattformunabhängige GUIs mit wxWidgets.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

wxpython equivalent zu Tkinter(OptionMenu) gesucht

Beitragvon sea-live » Sonntag 2. März 2008, 17:39

Servus ich suche zu dem unten Tkinter ein equivalent unter wxPython Frame
bitte um hilfe
Danke

Code: Alles auswählen

self.optionMdax = tk.OptionMenu(self.auswahlframe, self.var_symbol,
                                        command=self.druck,
                                        *self.mdax)
        self.optionMdax.pack(side=tk.LEFT)
        self.buttons.append(self.optionMdax)
       


Ergebniss der Sitzung:

Code: Alles auswählen


import  wx

class Auswahl(wx.Frame):
    def __init__(self, parent = None, title = "AuswahlMenue",
                 size = wx.Size(500, 150)):
        wx.Frame.__init__(self, parent, -1, title, size = size)
       
        tecdax = ['MOR.DE','IDS.DE','GPC.DE','FNT.DE','ES6.DE','DRW3.DE',
                  'SWV.DE','TA6.DE','UTDI.DE','VTW.DE','WDI.DE']
        dax30=['ADS.DE','ALV.DE','BAS.DE','BAY.DE','BMW.DE','CBK.DE',
                 'SIE.DE','TKA.DE','TUI1.DE','VOW.DE','SAP.DE']
        mdax=['CLS1.DE','ALT.DE','AMB2.DE','AQU.DE','ARL.DE','ARO.DE',
                'WCH.DE','WIN.DE']
        cdax=['IUR.DE','PIT.DE','HUL.DE','SIM.DE','MNV6.DE','RIN7.DE',
                'DPW.DE','DPB.DE','DTE.DE']
        sdax=['AB1.DE','B5A.DE','AOX.DE','BAD.DE','BHS.DE','BYW6.DE','COM.DE',
              'SPR.DE','T3C.DE','TEG.DE','TTK.DE','VIA.DE','WAC.DE','WAS.DE',
              'ZIL2.DE']

        self.symbollisten = {'tecdax':tecdax, 'mdax':mdax,'cdax':cdax,'sdax':sdax,'dax30':dax30}
       
        wx.StaticText(self, -1, "Auswahl_Drop_down mit wxChoice.", (15, 10))
        self.wertx=10
   
        for key in self.symbollisten:
            wx.StaticText(self, -1, key, (self.wertx, 50), (40, -1))
            self.liste=self.symbollisten[key]
            self.liste = wx.Choice(self, -1, (self.wertx, 70),
                  choices = self.liste)
            self.Bind(wx.EVT_CHOICE, self.IhreWahl,self.liste)
            self.wertx=self.wertx+80
           
           
         
    def IhreWahl(self, event):
        print ('Ihre Auswahl: %s\n' % event.GetString())
        for key, liste in self.symbollisten.iteritems():
            if event.GetEventObject().GetStringSelection() in liste:
                print 'liste: '+key
                self.listenname=key
        dlg = wx.MessageDialog(self, ' Symbol: %s\n Liste : %s'%(event.GetString(),self.listenname),
                               'INFO Box IHRE Auswahl',
                               wx.OK | wx.ICON_INFORMATION
                               #wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_INFORMATION
                               )
        dlg.ShowModal()
        dlg.Destroy()

def main():
    """Testing"""
    app = wx.PySimpleApp()
    f = Auswahl()
    f.Center()
    f.Show()
    app.MainLoop()


if __name__ == "__main__":
    main()
Zuletzt geändert von sea-live am Mittwoch 5. März 2008, 09:25, insgesamt 3-mal geändert.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Beitragvon nkoehring » Sonntag 2. März 2008, 21:48

Ehm, koenntest du ein lauffaehiges kleines Beispiel machen... oder schlicht einen Screenshot, auf dem man sieht, wie so ein OptionMenü aussieht und was es macht?
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Montag 3. März 2008, 07:05

Ist wx.Choice was Du suchst? Das OptionMenu in Tkinter sieht ja eher etwas "gewöhnungsbedürftig" aus. In wx kannst Du für eine Auswahl wx.Choice oder wx.ComboBox verwenden.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Beitragvon sea-live » Montag 3. März 2008, 12:31

Danke für die Rückantwort

werde mich damit auseinandersetzen es gibt ja auch noch ne DEMO bei wx hatte ich ganz vergessen
Tkinter Button Auswahl menue wie gewünscht


Code: Alles auswählen


aktuell letzter beitrag
 
Zuletzt geändert von sea-live am Montag 3. März 2008, 15:43, insgesamt 1-mal geändert.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Beitragvon sea-live » Montag 3. März 2008, 13:29

hier war alles falsch letzter beitrag seite 2
Zuletzt geändert von sea-live am Montag 3. März 2008, 15:44, insgesamt 1-mal geändert.
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Montag 3. März 2008, 13:50

ja, kann er

Code: Alles auswählen

event.GetEventObject()
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Montag 3. März 2008, 14:03

Füge mal hinter Zeile 32 folgendes ein:

Code: Alles auswählen

print {self.td: 'Tecdax', self.da: 'DAX30'}[event.GetEventObject()]
MfG
HWK
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Beitragvon sea-live » Montag 3. März 2008, 14:43

ich Bekomme das einfach nicht in den Griff
wo liegt der Fehler in zeile 38
DANKE


Code: Alles auswählen


Lauffähiges programm im ersten Beitrag

Zuletzt geändert von sea-live am Montag 3. März 2008, 16:06, insgesamt 1-mal geändert.
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Montag 3. März 2008, 14:51

Zeile 38:

Code: Alles auswählen

print event.GetEventObject().GetStringSelection()


Mawilo
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Montag 3. März 2008, 14:54

Mit der GetEventObject Methode bekommst du das wx.Choice Objekt über das der Event ausgelöst wurde.

Übrigens: Diese Zuweisung von self.liste in der for Schleife ist nicht allzu sinnvoll, da du am ende lediglich das letzte erzeugte Objekt an den Namen gebunden hast.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Beitragvon sea-live » Montag 3. März 2008, 15:08

Zap hat geschrieben:Mit der GetEventObject Methode bekommst du das wx.Choice Objekt über das der Event ausgelöst wurde.

Übrigens: Diese Zuweisung von self.liste in der for Schleife ist nicht allzu sinnvoll, da du am ende lediglich das letzte erzeugte Objekt an den Namen gebunden hast.


so läuft das nicht

was wenn ich dem objekt eine ID mitgebe
und die dann auslese
da bekomm ich aber nicht was ich da mit self.i reingeschrieben habe

Wo kann ich die Methoden die der eventhandler hat einsehen????
ich forsche da völlig im dunkelen rum.

Code: Alles auswählen

        for key in self.symbollisten:
            wx.StaticText(self, -1, key, (self.wertx, 50), (40, -1))
            self.liste=self.symbollisten[key]
            self.liste = wx.Choice(self, -1, (self.wertx, 70),
                  choices = self.liste)
            self.Bind(wx.EVT_CHOICE, self.IhreWahl,self.liste,id=self.i)
            self.wertx=self.wertx+80
            self.i=self.i+1
           
         
    def IhreWahl(self, event):
        print ('Ihre Auswahl: %s\n' % event.GetString())
        print event.GetId()       
   
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Montag 3. März 2008, 15:20

Du solltest schon die Beiträge lesen :wink:

Code: Alles auswählen

    def IhreWahl(self, event):
        print u'Ihre Auswahl: %s\n' % event.GetEventObject().GetStringSelection()
        dlg = wx.MessageDialog(self, 'Symbol: %s'%event.GetEventObject().GetStringSelection(),
                               'INFO Box IHRE Auswahl',
                               wx.OK | wx.ICON_INFORMATION)


Wenn ich das richtig verstanden habe, möchtest Du doch nur die gewählten Einträge ausgeben.

Mawilo
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Montag 3. März 2008, 15:24

sea-live hat geschrieben:so läuft das nicht

Was läuft so nicht?!

sea-live hat geschrieben:was wenn ich dem objekt eine ID mitgebe
und die dann auslese
da bekomm ich aber nicht was ich da mit self.i reingeschrieben habe

Du kannst natürlich auch mit id's hantieren. Ich würde es so machen das ich die wx.Choice Objekte als Keys für das Dictionary nehmen würde, und als Values die Listen wie tecdax und Co.
Wenn du dann einen Event hast kommst du über GetEventObject an das Choice Objekt und kannst dieses Als Schlüssel für das Dictionary benutzen. Das sind aber alles nur spekulationen, aus dem was ich so daraus lese was du machen willst. Es geht bestimmt auch noch besser, aber dafür weiß ich zu wenig von deinem Vorhaben.
sea-live hat geschrieben:Wo kann ich die Methoden die der eventhandler hat einsehen????
ich forsche da völlig im dunkelen rum.

http://www.wxpython.org/docs/api/wx.Event-class.html
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Montag 3. März 2008, 15:28

Mawilo hat geschrieben:Wenn ich das richtig verstanden habe, möchtest Du doch nur die gewählten Einträge ausgeben.
So wie ich das verstehe scheint er da noch mehr machen zu wollen. Warum sonst sowas?:

Code: Alles auswählen

        print self.symbollisten[event.GetEventObject()]
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Beitragvon sea-live » Montag 3. März 2008, 15:36

@mawilo

HAB ich

Code: Alles auswählen

print event.GetEventObject().GetStringSelection()

das liefert nur den gewählten listen eintrag nicht den Listennamen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder