Исходный код EJIO.ctk_extender.widget.form.fields.radio
## /ctk_extender/widget/form/fields/radio.py
import customtkinter as ctk
from typing import Any
from ...base import Widget
from ...geometry import GeometryStrategy
from .base import InputField
__all__ = [
'FormRadioButtonGroup',
]
[документация]
class FormRadioButtonGroup(Widget, InputField):
"""Группа радио-кнопок для выбора одного значения из нескольких опций."""
def __init__(
self,
parent: Any,
name: str,
options: list[str],
geometry: GeometryStrategy | None = None
) -> None:
self._name: str = name
self._options: list[str] = options
# Создаем внутреннюю переменную Tkinter для отслеживания группы кнопок
self._var: ctk.StringVar = ctk.StringVar(value=options[0] if options else "")
self._buttons: list[ctk.CTkRadioButton] = []
super().__init__(parent, geometry)
[документация]
def build(self) -> ctk.CTkFrame:
"""
Собирает невидимый фрейм-контейнер, внутри которого
автоматически упаковывает радио-кнопки по вертикали.
"""
frame = ctk.CTkFrame(self.parent, fg_color="transparent")
for option in self._options:
rb = ctk.CTkRadioButton(frame, text=option, variable=self._var, value=option)
rb.pack(anchor="w", pady=5)
self._buttons.append(rb)
return frame
@property
def name(self) -> str:
return self._name