从sqlite数据库设置一组wxPython滑块

从sqlite数据库设置一组wxPython滑块,wxpython,Wxpython,我有14个wx.slider,self.slide0到self.slide15,还有一个sqlite3数据库,它将滑块的值作为一组保存 用户决定要从文本输入对话框访问哪个集合,程序将获得该行的值 def onSliders(self, event): dlg = wx.TextEntryDialog(self, "Enter the Set Number for this profile", " Settings","") if dlg.ShowModal()==wx.

我有14个wx.slider,self.slide0到self.slide15,还有一个sqlite3数据库,它将滑块的值作为一组保存

用户决定要从文本输入对话框访问哪个集合,程序将获得该行的值

def onSliders(self, event):     
    dlg = wx.TextEntryDialog(self, "Enter the Set Number for this profile", " Settings","")
    if dlg.ShowModal()==wx.ID_OK:
        self.sliderSet = dlg.GetValue()
        val = self.c.execute('SELECT * from Sliders WHERE Index_Row =?', (self.sliderSet)).fetchall()
        val = val[0][2:]
        for i in self.allSlides:
            i.SetValue(val) # This is where it goes off the rails
val=[(1,1,57,58,54,25,89,50,0,0,0,0,0,0,0,0,0,0)]

前两个值不是幻灯片设置,因此

val = val[0][2:]
val = (57, 58, 54, 25, 89, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
我有一张所有幻灯片的列表。如何遍历所有幻灯片和值,并将每个幻灯片设置为相应的值

要做到这一点,唯一的方法是单独设置每个选项吗

slide0.SetValue(val[0])
slide1.SetValue(val[1])

使用简单计数器访问值:

import wx

class Panel1(wx.Panel):

    def __init__(self, parent, id):
        #self.log = log
        wx.Panel.__init__(self, parent, -1)
        self.slider0 = wx.Slider(self, -1, 0, 0, 10,style=wx.SL_LABELS,size=wx.Size(300, -1))
        self.slider1 = wx.Slider(self, -1, 0, 0, 10,style=wx.SL_LABELS,size=wx.Size(300, -1))
        self.slider2 = wx.Slider(self, -1, 0, 0, 10,style=wx.SL_LABELS,size=wx.Size(300, -1))
        self.slider3 = wx.Slider(self, -1, 0, 0, 10,style=wx.SL_LABELS,size=wx.Size(300, -1))
        sizer = wx.GridBagSizer(5,5)
        sizer.Add(self.slider0, (1,2))
        sizer.Add(self.slider1, (2,2))
        sizer.Add(self.slider2, (3,2))
        sizer.Add(self.slider3, (4,2))
        self.SetSizer(sizer)
        self.s = [self.slider0,self.slider1,self.slider2,self.slider3]
        x = [5,6,7,8]
        counter = 0
# Simple method using a list of sliders
#        for i in self.s:
#            i.SetValue(x[counter])
#            counter +=1

#Avoid using a list, quiz the contents of the panel for all slider elements
        children = self.GetChildren()
        for child in children:
            if child.GetClassName() == "wxSlider":
                child.SetValue(x[counter])
                counter += 1


app = wx.App()
frame = wx.Frame(None, -1, "slider test", size = (600, 350))
Panel1(frame, -1)
frame.Show()
app.MainLoop()