Seite 1 von 1

wo finde ich eine demo für spin.GetValue

Verfasst: Sonntag 4. Mai 2008, 22:06
von sechsrad
hallo, ich möchte diesen befehl anwenden in wxpython : spin.GetValue .
ich möchte den eingestellten wert im spin weiterverarbeiten.
finde keine lösung.

mfg

Verfasst: Sonntag 4. Mai 2008, 22:16
von tim2611
Hallo,

nehmen wir an, Du hast ein SpinCtrl erzeugt:

Code: Alles auswählen

self.scAnzahl = wx.SpinCtrl(panel, -1, '', pos=(25,42), size=(60,30))
Nun kannst Du mittels self.scAnzahl.GetValue() den Wert auslesen.

Code: Alles auswählen

wert = self.scAnzahl.GetValue()
Gruß
Timo

Verfasst: Montag 5. Mai 2008, 12:20
von sechsrad
ich habe ja dem spin ein event gegeben:

self.spin_ctrl_1 = wx.SpinCtrl(self, -1, "")
self.spin_ctrl_1.SetRange(0, 100)
self.spin_ctrl_1.SetValue(0)
self.Bind(wx.EVT_SPIN, self.printet, self.spin_ctrl_1)

aber beim anklicken zum hochzählen wird der wert nicht geprintet .woran liegt das?


Code: Alles auswählen

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        
        self.spin_ctrl_1 = wx.SpinCtrl(self, -1, "")
        self.spin_ctrl_1.SetRange(0, 100)
        self.spin_ctrl_1.SetValue(0)
        self.Bind(wx.EVT_SPIN, self.printet, self.spin_ctrl_1)
        
        self.__set_properties()
        self.__do_layout()
        # end wxGlade

    def __set_properties(self):
        # begin wxGlade: MyFrame.__set_properties
        self.SetTitle("frame_1")
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: MyFrame.__do_layout
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        sizer_1.Add(self.spin_ctrl_1, 0, 0, 0)
        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        self.Layout()
        # end wxGlade

# end of class MyFrame

    def printet(self, event):
        global wert
        wert = self.spin_ctrl_1.GetValue()
        print wert

class MyApp(wx.App):
    def OnInit(self):
        wx.InitAllImageHandlers()
        frame_1 = MyFrame(None, -1, "")
        self.SetTopWindow(frame_1)
        frame_1.Show()
        return 1

# end of class MyApp

if __name__ == "__main__":
    app = MyApp(0)
    app.MainLoop()

Verfasst: Montag 5. Mai 2008, 12:56
von tim2611
weil Dein Event falsch ist ;)
Falsch:

Code: Alles auswählen

self.Bind(wx.EVT_SPIN, self.printet, self.spin_ctrl_1)
Richtig:

Code: Alles auswählen

self.Bind(wx.EVT_SPINCTRL, self.printet, self.spin_ctrl_1)

Verfasst: Montag 5. Mai 2008, 14:30
von sechsrad
jup, danke. das wars.
hatte dieses aus einem wxpython-demo:

Code: Alles auswählen

self.spin = wx.SpinButton(self, -1,
                                  (w, 50),
                                  (h*2/3, h),
                                  wx.SP_VERTICAL)
        self.spin.SetRange(1, 100)
        self.spin.SetValue(1)

        self.Bind(wx.EVT_SPIN, self.OnSpin, self.spin)

und das andere mit wxglade angefertigt, da ist mir das garnicht aufgefallen das mit "wx.SpinButton" und "wx.SpinCtrl".

Verfasst: Montag 5. Mai 2008, 16:38
von tim2611
und das andere mit wxglade angefertigt, da ist mir das garnicht aufgefallen das mit "wx.SpinButton" und "wx.SpinCtrl".
Wenn Du wxGlade benutzt, kannst Du in den Eigenschaften das Event einstellen ;) Da passiert das nicht so schnell.

LG
Tim2611