-
-
Notifications
You must be signed in to change notification settings - Fork 0
Properties Panel
Schema-driven editor for the selected widget. Each widget exposes its own grouped property list.
| 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 |
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).
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.
When several widgets are selected, only common properties are editable. Mixed values show a placeholder.
Right-click any row for Reset to default, cut/copy/paste, min/max. The ? icon opens this widget's wiki page.
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.
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
|
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.
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 also — Widgets · Selection · Variables · Object References · Event Handlers