从sqlite数据库设置一组wxPython滑块
我有14个wx.slider,self.slide0到self.slide15,还有一个sqlite3数据库,它将滑块的值作为一组保存 用户决定要从文本输入对话框访问哪个集合,程序将获得该行的值从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.
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()