Я ищу способ создания нового виджета в ttk или Tkinter. Я хотел бы иметь виджет, похожий на микс между Scale и кнопкой переключения с несколькими позициями (параметр option) для возможности выбора различных опций дискретности. Я хотел бы, чтобы эта вещь была полностью совместима с модулем ttk в Python.
Кто-нибудь знает, как этого добиться?
Спасибо.
Прямо сейчас уродливое решение, которое я принял, это:
class Slider(ttk.Frame):
def __init__(self,parent=None,LabelSld = u'',fmt = '26',statelst=[],Clist=[],default=0,NrmLblLink = None):
ttk.Frame.__init__(self,parent)
self.pdx = 2
self.pdy = 1
self.Amttxt = Tkinter.StringVar()
self.Amttxt.set(format(LabelSld,fmt))
self.Amtlbl = ttk.Label(self,textvariable=self.Amttxt, anchor='ne')
self.Amtlbl.grid(padx=self.pdx,pady=self.pdy,column=0,row=0,sticky='nw')
self.Amt = Tkinter.StringVar()
self.Amt.set('')
self.AmtIntVar = Tkinter.IntVar()
self.AmtIntVar.set(0)
self.Lbl = ttk.Label(self)
self.Lbl.grid(column=0,row=1,sticky='ne')
self.Lbl.configure(foreground=Clist[0])
self.Lbl.configure(text=statelst[default])
self.StateLst = statelst
self.ColorLst = Clist
if NrmLblLink == None:
self.Slider = ttkw.TickScale(self,from_=0, to=len(statelst)-1,orient='horizontal', command = partial(scale_update,label=self.Lbl, clist = self.StateLst, color_list = self.ColorLst),resolution = 1,showvalue=0,tickinterval=1)
else:
self.Slider = ttkw.TickScale(self,from_=0, to=len(statelst)-1,orient='horizontal', command = partial(scale_update,label=self.Lbl, clist = self.StateLst, color_list = self.ColorLst, NrmLblLink = NrmLblLink),resolution = 1,showvalue=0,tickinterval=1)
self.Slider.grid(column=1,row=0,sticky='ew',rowspan=2)
![Design of toggle button widget](https://i.stack.imgur.com/ujBtY.png)