Python ttk или дизайн виджета TkInter - PullRequest
0 голосов
/ 15 ноября 2018

Я ищу способ создания нового виджета в 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

...