Skip to content

Properties Panel

Lasha Kandelaki edited this page May 7, 2026 · 7 revisions

Properties Panel

Schema-driven editor for the selected widget. Each widget exposes its own grouped property list.

Editors

Type Editor
Number Inline field with drag-scrub
Boolean Toggle
Enum Dropdown
Color Tint picker + eyedropper + saved colors
Multiline Long text (textarea)
Font Font picker (project cascade + system fonts)
Image Project library + Lucide icons
Segment values Editable list for segmented-button items

Groups & subgroups

Properties are grouped per widget. Group order follows a Content → Layout → Visual → Behavior rhythm — the things you tend to set first (text, icon) sit at the top; size/position next; then visual chrome (corners, colors); then behavior toggles (cursor, focus). Some subgroups have a master toggle (e.g. Border off → border properties hidden).

Hover tooltips

Hovering a label cell pops a tooltip with the row's purpose and constraints (e.g. "Auto Fit derives font_size from the box; the Size row disables while it's on"). Event-header rows show a one-line description of when the event fires plus any caveat — <Motion> and <Configure> warn about high frequency; <FocusIn> / <KeyPress> warn that they need takefocus=True.

Multi-select

When several widgets are selected, only common properties are editable. Mixed values show a placeholder.

Reset & wiki

Right-click any row for Reset to default, cut/copy/paste, min/max. The ? icon opens this widget's wiki page.

Variable bindings

Two ways to bind a property to a Variables:

  • Click the ◇ in a row's left gutter — opens the bind menu directly.
  • Right-click the row — context menu with Bind to variable ▸ (lists existing variables + Create variable…), or Unbind from: <name> if already bound.

Bound rows render with + an orange tint; the on the right unbinds. The diamond's color reflects scope: blue = global, orange = local to the current form. Updates propagate live to every widget bound to the same variable.

Events group

When a widget supports Event Handlers, an Events group lands at the end of the schema. Each event row shows the bound method name + its docstring; the header has [+] to add an action and bound rows have [✕] to unbind. Widgets with many bind events (e.g. CTkLabel) split the list into a flat default block and a collapsible Advanced sub-group for rare / high-frequency / focus-gated events.

Action How
Add [+] on event header, or right-click → Add action
Open in editor Double-click row, F7, or right-click → Open in editor
Reorder Right-click row → Move up / Move down
Unbind [✕] on row, or right-click → Unbind

Object Reference toggle (per widget)

Inner widgets show an Object Reference toggle. Flip it on to register the widget as a named local reference — the form's behaviour file can then reach it as self.<ref_name>. The name is auto-suggested from the widget's user-facing name (or <type>_ref if it isn't a valid identifier); collisions get a _2 / _3 suffix. See Object References for the full picture.

Local Variables group (Window selected)

Selecting the Window itself surfaces a read-only Local Variables group listing every variable scoped to the form. Right-click → Open Variables window… jumps straight to that entry.

The same panel also exposes the Window-Global Reference toggle (turning the form itself into a project-wide reference) and an Object References group listing every local reference declared on the form.


See alsoWidgets · Selection · Variables · Object References · Event Handlers

Clone this wiki locally