def __init__(self, *args, **kwargs): self._labels = [] self._labelsPos = [] self._currentIndex = -1 self._lastIndex = -1 self._offset = -1 self._tabMovable = False self._tabClosable = False self._leftScroller = False self._rightScroller = False self._sideBorder = TTkK.LEFT | TTkK.RIGHT self._tabColor = TTkCfg.theme.tabColor self._tabBorderColor = TTkCfg.theme.tabBorderColor self._tabSelectColor = TTkCfg.theme.tabSelectColor self._tabOffsetColor = TTkCfg.theme.tabOffsetColor self._tabColorFocus = TTkCfg.theme.tabColorFocus self._tabBorderColorFocus = TTkCfg.theme.tabBorderColorFocus self._tabSelectColorFocus = TTkCfg.theme.tabSelectColorFocus self._tabOffsetColorFocus = TTkCfg.theme.tabOffsetColorFocus # Signals self.currentChanged = pyTTkSignal(int) self.tabBarClicked = pyTTkSignal(int) TTkWidget.__init__(self, *args, **kwargs) self._name = kwargs.get('name', '_TTkTabs') self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
def __init__(self, *args, **kwargs): TTkWidget.__init__(self, *args, **kwargs) self._name = kwargs.get('name', 'TTkScrollBar') # Define Signals self.valueChanged = pyTTkSignal(int) # Value self.rangeChanged = pyTTkSignal(int, int) # Min, Max self.sliderMoved = pyTTkSignal(int) # Value self._orientation = kwargs.get('orientation', TTkK.VERTICAL) if self._orientation == TTkK.VERTICAL: self.setMaximumWidth(1) self.setMinimumSize(1, 3) else: self.setMaximumHeight(1) self.setMinimumSize(3, 1) self._minimum = kwargs.get('minimum', 0) self._maximum = kwargs.get('maximum', 99) self._singlestep = kwargs.get('singlestep', 1) self._pagestep = kwargs.get('pagestep', 10) self._value = kwargs.get('value', 0) self._color = kwargs.get('color', TTkColor.RST) self._focusColor = kwargs.get('focusColor', TTkColor.fg('#cccc00')) self._screenPgDown = (0, 0) self._screenPgUp = (0, 0) self._screenScroller = (0, 0) self._draggable = False self._mouseDelta = 0 self.setFocusPolicy(TTkK.ClickFocus)
def __init__(self, *args, **kwargs): # Signals self.viewMovedTo = pyTTkSignal(int, int) # x, y self.viewSizeChanged = pyTTkSignal(int, int) # w, h self.viewChanged = pyTTkSignal() super().__init__(self, *args, **kwargs) self._name = kwargs.get('name' , 'TTkAbstractScrollView') self._viewOffsetX = 0 self._viewOffsetY = 0
def __init__(self, *args, **kwargs): TTkWidget.__init__(self, *args, **kwargs) self._name = kwargs.get('name', 'TTkCheckbox') # Define Signals self.stateChanged = pyTTkSignal(int) self.clicked = pyTTkSignal(bool) self._checked = kwargs.get('checked', False) self._text = kwargs.get('text', '') self.setMinimumSize(3 + len(self._text), 1) self.setMaximumHeight(1) self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
def __init__(self, *args, **kwargs): # Signals self.pathPicked = pyTTkSignal(str) self.filePicked = pyTTkSignal(str) self.filesPicked = pyTTkSignal(list) self.folderPicked = pyTTkSignal(str) TTkWindow.__init__(self, *args, **kwargs) self._name = kwargs.get('name', 'TTkFileDialogPicker') self._recentPathId = -1 self._recentPath = [] self._path = kwargs.get('path', '.') self._filter = '*' self._filters = kwargs.get('filter', 'All Files (*)') self._caption = kwargs.get('caption', 'File Dialog') self._fileMode = kwargs.get('fileMode', TTkK.FileMode.AnyFile) self.setTitle(self._caption) self.setLayout(TTkGridLayout()) # Top (absPath) topLayout = TTkGridLayout() self.layout().addItem(topLayout, 0, 0) self._lookPath = TTkComboBox(textAlign=TTkK.LEFT_ALIGN) self._btnPrev = TTkButton(text="<", maxWidth=3, enabled=False) self._btnNext = TTkButton(text=">", maxWidth=3, enabled=False) self._btnUp = TTkButton(text="^", maxWidth=3, enabled=True) self._btnPrev.clicked.connect(self._openPrev) self._btnNext.clicked.connect(self._openNext) self._btnUp.clicked.connect(self._openUp) topLayout.addWidget(TTkLabel(text="Look in:", maxWidth=14), 0, 0) topLayout.addWidget(self._lookPath, 0, 1) topLayout.addWidget(self._btnPrev, 0, 2) topLayout.addWidget(self._btnNext, 0, 3) topLayout.addWidget(self._btnUp, 0, 4) # Bottom (File Name, Controls) self._fileName = TTkLineEdit() self._fileType = TTkComboBox(textAlign=TTkK.LEFT_ALIGN) self._btnOpen = TTkButton(text="Open", maxWidth=8, enabled=False) self._btnCancel = TTkButton(text="Cancel", maxWidth=8) for f in self._filters.split(';;'): if m := re.match(".*\(.*\)", f): self._fileType.addItem(f)
def __init__(self, filename, window, numWindows): # Signals self.indexUpdated = pyTTkSignal(float) self.indexed = pyTTkSignal() self._window = window self._numW = numWindows self._filename = filename self._indexes = [0] self._indexesMutex = threading.Lock() self._width = 0 self._buffer = [None] * self._numW self._pages = [None] self._fd = open(self._filename, 'r') threading.Thread(target=self.createIndex).start()
def __init__(self, *args, **kwargs): TTkWidget.__init__(self, *args, **kwargs) self._name = kwargs.get('name', 'TTkButton') # Define Signals self.clicked = pyTTkSignal() self._text = kwargs.get('text', "") self._border = kwargs.get('border', False) self._borderColor = kwargs.get('borderColor', TTkCfg.theme.buttonBorderColor) self._textColor = kwargs.get('color', TTkCfg.theme.buttonTextColor) self._borderColorClicked = TTkCfg.theme.buttonBorderColorClicked self._textColorClicked = TTkCfg.theme.buttonTextColorClicked self._borderColorFocus = TTkCfg.theme.buttonBorderColorFocus self._textColorFocus = TTkCfg.theme.buttonTextColorFocus self._borderColorDisabled = TTkCfg.theme.buttonBorderColorDisabled self._textColorDisabled = TTkCfg.theme.buttonTextColorDisabled self._pressed = False self._keyPressed = False if self._border: self.setMinimumSize(2 + len(self._text), 3) else: self.setMinimumSize(len(self._text) + 2, 1) self.setMaximumHeight(1) self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
def __init__(self, *args, **kwargs): # Default Class Specific Values self._selectionMode = kwargs.get("selectionMode", TTkK.SingleSelection) self._selectedItems = [] self._items = [] self._highlighted = None self._color = TTkCfg.theme.listColor self._selectedColor = TTkCfg.theme.listColorSelected # Signals self.itemClicked = pyTTkSignal(TTkWidget) self.textClicked = pyTTkSignal(str) # Init Super TTkAbstractScrollView.__init__(self, *args, **kwargs) self._name = kwargs.get('name', 'TTkListWidget') self.viewChanged.connect(self._viewChangedHandler) self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
def __init__(self, *args, **kwargs): # signals self.colorPicked = pyTTkSignal(int) self._selected = (-1, -1) TTkWidget.__init__(self, *args, **kwargs) self._name = kwargs.get('name', 'TTkColorPicker') self._hue = 0xff0000 self.setFocusPolicy(TTkK.ClickFocus)
def __init__(self, *args, **kwargs): self.colorClicked = pyTTkSignal(TTkColor) TTkButton.__init__(self, *args, **kwargs) TColor.__init__(self, *args, **kwargs) self._name = kwargs.get('name', '_TTkColorButton') self._custom = kwargs.get('custom', False) self.clicked.connect(self._clicked) self._textColorFocus = self._textColor
def __init__(self, *args, **kwargs): # Signals self.refreshData = pyTTkSignal(TTkFancyTreeWidgetItem) self._data = args[0] self._children = [] self._childIndicatorPolicy = kwargs.get( 'childIndicatorPolicy', TTkK.DontShowIndicatorWhenChildless) self._expand = False self._parent = kwargs.get("parent", None)
def __init__(self, *args, **kwargs): # Signals self.colorSelected = pyTTkSignal(TTkColor) _TTkColorButton.__init__(self, *args, **kwargs) self._name = kwargs.get('name', 'TTkColorButtonPicker') self._custom = False self.clicked.connect(self._colorClicked) self._type = self._textColor.colorType() hexColor = self._textColor.getHex(self._type) self.setColor(TTkColor.bg(hexColor))
def __init__(self, *args, **kwargs): TData.__init__(self, *args, **kwargs) TTkLabel.__init__(self, *args, **kwargs) self._name = kwargs.get('name', 'TTkAbstractListItem') # Define Signals self.listItemClicked = pyTTkSignal(TTkAbstractListItem) self._selected = False self._pressed = False self._highlighted = False self.setFocusPolicy(TTkK.ClickFocus)
def __init__(self): # Define Signals self.timeout = pyTTkSignal() self._timerEvent = threading.Event() self._quit = threading.Event() self._stopTime = 0 self._delay = 0 self._delayLock = threading.Lock() threading.Thread.__init__(self) TTkTimer._timers.append(self) threading.Thread.start(self)
def __init__(self, *args, **kwargs): #Signals self.focusChanged = pyTTkSignal(bool) self._name = kwargs.get('name', 'TTkWidget') self._parent = kwargs.get('parent', None) self._pendingMouseRelease = False self._x = kwargs.get('x', 0) self._y = kwargs.get('y', 0) self._x, self._y = kwargs.get('pos', (self._x, self._y)) self._width = kwargs.get('width', 0) self._height = kwargs.get('height', 0) self._width, self._height = kwargs.get('size', (self._width, self._height)) padding = kwargs.get('padding', 0) self._padt = kwargs.get('paddingTop', padding) self._padb = kwargs.get('paddingBottom', padding) self._padl = kwargs.get('paddingLeft', padding) self._padr = kwargs.get('paddingRight', padding) self._maxw = kwargs.get('maxWidth', 0x10000) self._maxh = kwargs.get('maxHeight', 0x10000) self._maxw, self._maxh = kwargs.get('maxSize', (self._maxw, self._maxh)) self._minw = kwargs.get('minWidth', 0x00000) self._minh = kwargs.get('minHeight', 0x00000) self._minw, self._minh = kwargs.get('minSize', (self._minw, self._minh)) self._visible = kwargs.get('visible', True) self._enabled = kwargs.get('enabled', True) self._focus = False self._focus_policy = TTkK.NoFocus self._widgetItem = TTkWidgetItem(widget=self) self._layout = TTkLayout() # root layout self._layout.setParent(self) self._layout.addItem(kwargs.get('layout', TTkLayout())) # main layout self._canvas = TTkCanvas(widget=self, width=self._width, height=self._height) if self._parent is not None: self._parent.addWidget(self) self._parent.update(repaint=True, updateLayout=True) self.update(repaint=True, updateLayout=True)
def __init__(self, *args, **kwargs): # signals self.colorPicked = pyTTkSignal(int) TTkWidget.__init__(self, *args, **kwargs) self._name = kwargs.get('name', '_TTkHueCanvas') self.setMaximumHeight(1) self.setMinimumSize(6, 1) self._hueList = [] self._selected = -1 self.setFocusPolicy(TTkK.ClickFocus)
def __init__(self, *args, **kwargs): # Signals self.itemActivated = pyTTkSignal(TTkTreeWidgetItem, int) self.itemChanged = pyTTkSignal(TTkTreeWidgetItem, int) self.itemClicked = pyTTkSignal(TTkTreeWidgetItem, int) self.itemDoubleClicked = pyTTkSignal(TTkTreeWidgetItem, int) self.itemExpanded = pyTTkSignal(TTkTreeWidgetItem) self.itemCollapsed = pyTTkSignal(TTkTreeWidgetItem) super().__init__(self, *args, **kwargs) self._name = kwargs.get('name', 'TTkTreeView') self._selected = None self._selectedId = None self._separatorSelected = None self._header = kwargs.get('header', []) self._columnsPos = [] self._cache = [] self._sortColumn = -1 self._sortOrder = TTkK.AscendingOrder self._headerColor = kwargs.get('headerColor', TTkCfg.theme.treeHeaderColor) self._selectedColor = kwargs.get('selectedColor', TTkCfg.theme.treeSelectedColor) self._lineColor = kwargs.get('lineColor', TTkCfg.theme.treeLineColor) self.setMinimumHeight(1) self.setFocusPolicy(TTkK.ClickFocus) self._rootItem = None self.clear()
def __init__(self, *args, **kwargs): # Define Signals self.clicked = pyTTkSignal() TTkWidget.__init__(self, *args, **kwargs) self._name = kwargs.get('name', 'TTkRadioButton') # self.cehcked = pyTTkSignal() self._checked = kwargs.get('checked', False) self._text = kwargs.get('text', '') self.setMinimumSize(3 + len(self._text), 1) self.setMaximumHeight(1) self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus) if self._name not in TTkRadioButton._radioLists: TTkRadioButton._radioLists[self._name] = [self] else: TTkRadioButton._radioLists[self._name].append(self)
def __init__(self, *args, **kwargs): # Signals self.valueChanged=pyTTkSignal(int) TTkWidget.__init__(self, *args, **kwargs) self._name = kwargs.get('name' , 'TTkSpinBox' ) self._value = kwargs.get("value",0) self._maximum = kwargs.get("maximum",99) self._minimum = kwargs.get("minimum",0) self.setLayout(TTkGridLayout()) self.setPadding(0,0,0,2) self.setMinimumSize(4,1) self._mouseDelta = 0 self._valueDelta = 0 self._draggable = False self._lineEdit = TTkLineEdit(parent=self, text=str(self._value), inputType=TTkK.Input_Number) self._lineEdit.keyEvent = self.keyEvent self.setFocusPolicy(TTkK.ClickFocus) self._lineEdit.textEdited.connect(self._textEdited)
def __init__(self, *args, **kwargs): TTkAbstractListItem.__init__(self, *args, **kwargs) self._name = kwargs.get('name', 'TTkMenuButton') # signals self.menuButtonClicked = pyTTkSignal(TTkButton) self._color = kwargs.get('color', TTkCfg.theme.menuButtonColor) self._border = kwargs.get('border', TTkCfg.theme.menuButtonColor) self._borderColor = kwargs.get('borderColor', TTkCfg.theme.menuButtonBorderColor) self._menuOffset = kwargs.get('menuOffset', (-1, 0)) self._shortcut = [] self._menu = [] while self.text.find('&') != -1: index = self.text.find('&') shortcut = self.text[index + 1] TTkHelper.addShortcut(self, shortcut) self._shortcut.append(index) self.text = self.text[:index] + self.text[index + 1:] txtlen = len(self.text) self.resize(txtlen, 1) self.setMinimumSize(txtlen + 2, 1) self.setMaximumSize(txtlen + 2, 1) self.listItemClicked.connect(self.menuButtonEvent)
def __init__(self, *args, **kwargs): super().__init__(self, *args, **kwargs) #Signals self._clicked = pyTTkSignal(bool, _TTkDisplayedTreeItem, TTkFancyTreeWidgetItem) self._name = kwargs.get('name', '_TTkDisplayedTreeItem') self._depth = kwargs.get('depth', 0) self._text = kwargs.get('text', "") self._id = kwargs.get('id', 0) self._treeWidgetItem = kwargs.get('treeWidgetItem', None) self._isLeaf = self._treeWidgetItem.childIndicatorPolicy( ) == TTkK.DontShowIndicator self._isLeaf |= self._treeWidgetItem.childIndicatorPolicy( ) == TTkK.DontShowIndicatorWhenChildless and not self._treeWidgetItem.children( ) if self._isLeaf: self._control = None else: self._control = _TTkDisplayedTreeItemControl( parent=self, checked=self._treeWidgetItem.expand()) self._control.setGeometry(self._depth, 0, 1, 1) self._control.clicked.connect(self._controlClicked)
def __init__(self, *args, **kwargs): # Signals self.fileClicked = pyTTkSignal(TTkFileTreeWidgetItem) self.folderClicked = pyTTkSignal(TTkFileTreeWidgetItem) self.fileDoubleClicked = pyTTkSignal(TTkFileTreeWidgetItem) self.folderDoubleClicked = pyTTkSignal(TTkFileTreeWidgetItem) self.fileActivated = pyTTkSignal(TTkFileTreeWidgetItem) self.folderActivated = pyTTkSignal(TTkFileTreeWidgetItem) TTkTreeWidget.__init__(self, *args, **kwargs) self._name = kwargs.get('name' , 'TTkFileTreeWidget' ) self._path = kwargs.get('path','.') self._filter = '*' self.setHeaderLabels(["Name", "Size", "Type", "Date Modified"]) self.openPath(self._path) self.itemExpanded.connect(self._folderExpanded) self.itemCollapsed.connect(self._folderCollapsed) self.itemExpanded.connect(self._updateChildren) self.itemActivated.connect(self._activated)
def __init__(self, *args, **kwargs): self.dataChanged = pyTTkSignal()
def __init__(self, *args, **kwargs): # Signals self.colorSelected = pyTTkSignal(TTkColor) TTkWindow.__init__(self, *args, **kwargs) TColor.__init__(self, *args, **kwargs) self._name = kwargs.get('name', 'TTkColorPicker') self.setLayout(TTkGridLayout()) colorLayout = TTkGridLayout() # Right leftLayout = TTkLayout(minSize=(25, 20), maxWidth=25) # Left paletteLayout = TTkGridLayout(pos=(0, 0), size=(24, 9)) customLayout = TTkGridLayout(pos=(0, 10), size=(24, 4)) controlLayout = TTkLayout(pos=(0, 15), size=(24, 30)) # Color Layout Widgets self._colorCanvas = _TTkColorCanvas() self._hueCanvas = _TTkHueCanvas() colorLayout.addWidget(self._colorCanvas, 0, 0) colorLayout.addWidget(self._hueCanvas, 1, 0) self._hueCanvas.colorPicked.connect(self._colorCanvas.setHue) # Control controlLayout.addWidget(sc := _TTkShowColor( pos=(1, 1), size=(4, 4), color=TTkColor.bg('#ffffff'))) controlLayout.addWidget(TTkLabel(pos=(1, 0), text="rgb:")) controlLayout.addWidget(TTkLabel(pos=(6, 1), text="HTML:")) controlLayout.addWidget(leR := TTkSpinBox( pos=(7, 0), size=(5, 1), value=255, minimum=0, maximum=255)) controlLayout.addWidget(leG := TTkSpinBox( pos=(12, 0), size=(5, 1), value=255, minimum=0, maximum=255)) controlLayout.addWidget(leB := TTkSpinBox( pos=(18, 0), size=(5, 1), value=255, minimum=0, maximum=255)) controlLayout.addWidget( leHTML := TTkLineEdit(pos=(12, 1), size=(8, 1), text="#FFFFFF")) controlLayout.addWidget(okButton := TTkButton( pos=(6, 2), size=(6, 3), text="OK", border=True)) controlLayout.addWidget(cancelButton := TTkButton( pos=(13, 2), size=(10, 3), text="CANCEL", border=True)) controlLayout.addWidget(TTkLabel(pos=(3, 20), text="Seriously?")) @pyTTkSlot() def _okPressed(): self.color = sc.color self.colorSelected.emit(self.color) self.close() okButton.clicked.connect(_okPressed) @pyTTkSlot() def _cancelPressed(): self.colorSelected.emit(self.color) self.close() cancelButton.clicked.connect(_cancelPressed) @pyTTkSlot(int) def _controlSetRGBColor(color): sc.setRGBColor(color) leR.setValue((color & 0xff0000) >> 16) leG.setValue((color & 0x00ff00) >> 8) leB.setValue((color & 0x0000ff) >> 0) leHTML.setText("#{:06X}".format(color)) @pyTTkSlot(TTkColor) def _controlSetColor(color): r, g, b = color.bgToRGB() numColor = r << 16 | g << 8 | b _controlSetRGBColor(numColor) @pyTTkSlot() def _leHTMLChanged(): text = leHTML.text() if re.match('#[a-f0-9]{6}', text.lower()): _controlSetRGBColor(int(text[1:], 16)) leHTML.returnPressed.connect(_leHTMLChanged) @pyTTkSlot(int) def _leRGBChanged(value): r = leR.value() g = leG.value() b = leB.value() if r & (~0xff) or r & (~0xff) or r & (~0xff): return _controlSetRGBColor(r << 16 | g << 8 | b) leR.valueChanged.connect(_leRGBChanged) leG.valueChanged.connect(_leRGBChanged) leB.valueChanged.connect(_leRGBChanged) _controlSetColor(self.color) # Palette Layout Widgets paletteLayout.addWidget( b := _TTkColorButton(color=TTkColor.bg('#ff0000'), border=True, maxSize=(8, 3)), 0, 0, 1, 2) b.colorClicked.connect(_controlSetColor) paletteLayout.addWidget( b := _TTkColorButton(color=TTkColor.bg('#ffff00'), border=True, maxSize=(8, 3)), 0, 2, 1, 2) b.colorClicked.connect(_controlSetColor) paletteLayout.addWidget( b := _TTkColorButton(color=TTkColor.bg('#00ff00'), border=True, maxSize=(8, 3)), 0, 4, 1, 2) b.colorClicked.connect(_controlSetColor) paletteLayout.addWidget( b := _TTkColorButton(color=TTkColor.bg('#00ffff'), border=True, maxSize=(8, 3)), 1, 0, 1, 2) b.colorClicked.connect(_controlSetColor) paletteLayout.addWidget( b := _TTkColorButton(color=TTkColor.bg('#0000ff'), border=True, maxSize=(8, 3)), 1, 2, 1, 2) b.colorClicked.connect(_controlSetColor) paletteLayout.addWidget( b := _TTkColorButton(color=TTkColor.bg('#ff00ff'), border=True, maxSize=(8, 3)), 1, 4, 1, 2) b.colorClicked.connect(_controlSetColor) # Shades of Grey paletteLayout.addWidget( b := _TTkColorButton(color=TTkColor.bg('#ffffff'), border=True, maxSize=(4, 3)), 2, 0) b.colorClicked.connect(_controlSetColor) paletteLayout.addWidget( b := _TTkColorButton(color=TTkColor.bg('#dddddd'), border=True, maxSize=(4, 3)), 2, 1) b.colorClicked.connect(_controlSetColor) paletteLayout.addWidget( b := _TTkColorButton(color=TTkColor.bg('#aaaaaa'), border=True, maxSize=(4, 3)), 2, 2) b.colorClicked.connect(_controlSetColor) paletteLayout.addWidget( b := _TTkColorButton(color=TTkColor.bg('#666666'), border=True, maxSize=(4, 3)), 2, 3) b.colorClicked.connect(_controlSetColor) paletteLayout.addWidget( b := _TTkColorButton(color=TTkColor.bg('#333333'), border=True, maxSize=(4, 3)), 2, 4) b.colorClicked.connect(_controlSetColor) paletteLayout.addWidget( b := _TTkColorButton(color=TTkColor.bg('#000000'), border=True, maxSize=(4, 3)), 2, 5) b.colorClicked.connect(_controlSetColor) # Custom frame if TTkColorDialogPicker.customButtons is None: TTkColorDialogPicker.customButtons = ( _TTkColorButton(color=TTkColor.bg('#ffffff'), custom=True, border=True, maxSize=(3, 3)), _TTkColorButton(color=TTkColor.bg('#ffffff'), custom=True, border=True, maxSize=(3, 3)), _TTkColorButton(color=TTkColor.bg('#ffffff'), custom=True, border=True, maxSize=(3, 3)), _TTkColorButton(color=TTkColor.bg('#ffffff'), custom=True, border=True, maxSize=(3, 3)), _TTkColorButton(color=TTkColor.bg('#ffffff'), custom=True, border=True, maxSize=(3, 3)), _TTkColorButton(color=TTkColor.bg('#ffffff'), custom=True, border=True, maxSize=(3, 3)), _TTkColorButton(color=TTkColor.bg('#ffffff'), custom=True, border=True, maxSize=(3, 3)), _TTkColorButton(color=TTkColor.bg('#ffffff'), custom=True, border=True, maxSize=(3, 3))) customLayout.addWidget(b := TTkColorDialogPicker.customButtons[0], 0, 0) b.colorClicked.connect(_controlSetColor) customLayout.addWidget(b := TTkColorDialogPicker.customButtons[1], 0, 1) b.colorClicked.connect(_controlSetColor) customLayout.addWidget(b := TTkColorDialogPicker.customButtons[2], 0, 2) b.colorClicked.connect(_controlSetColor) customLayout.addWidget(b := TTkColorDialogPicker.customButtons[3], 0, 3) b.colorClicked.connect(_controlSetColor) customLayout.addWidget(b := TTkColorDialogPicker.customButtons[4], 0, 4) b.colorClicked.connect(_controlSetColor) customLayout.addWidget(b := TTkColorDialogPicker.customButtons[5], 0, 5) b.colorClicked.connect(_controlSetColor) customLayout.addWidget(b := TTkColorDialogPicker.customButtons[6], 0, 6) b.colorClicked.connect(_controlSetColor) customLayout.addWidget(b := TTkColorDialogPicker.customButtons[7], 0, 7) b.colorClicked.connect(_controlSetColor) customLayout.addWidget( b := TTkButton(border=False, text='Add to Custom Colors'), 1, 0, 1, 8) @pyTTkSlot() def _addCustomPressed(): btn = _TTkColorButton.lastClicked TTkLog.debug(f"{btn}") if btn is not None and \ btn.isCustom(): TTkLog.debug(f"2 {btn}") btn.setColor(sc.color) b.clicked.connect(_addCustomPressed) # Events self._colorCanvas.colorPicked.connect(_controlSetRGBColor) self.layout().addItem(leftLayout, 0, 0) self.layout().addItem(colorLayout, 0, 1) leftLayout.addItem(paletteLayout) leftLayout.addItem(customLayout) leftLayout.addItem(controlLayout)