fix: прочерк «—» у применимых показателей, «не применим» только у неприменимых
- применимый показатель: пусто / «—» (применим, категория не присвоена)
/ III / II / I категория
- неприменимый к сфере: в списке ТОЛЬКО «не применим», выбран
автоматически, заблокирован, авто-обоснование из словаря сферы
- кнопка «🔓» разблокирует конкретный показатель и возвращает
полный список (категории + прочерк)
This commit is contained in:
+17
-11
@@ -1868,10 +1868,11 @@ class DokoGenApp:
|
||||
return _just[m.group(1)]
|
||||
return None
|
||||
|
||||
def _unlock(combo, var, lbl_num, lbl_name, name, btn=None):
|
||||
"""Разблокировать конкретный показатель: вернуть выбор категории."""
|
||||
def _unlock(combo, var, lbl_num, lbl_name, name, btn=None, full_options=None):
|
||||
"""Разблокировать конкретный показатель: вернуть категории и «—» (прочерк)."""
|
||||
try:
|
||||
combo.config(state='readonly')
|
||||
combo.config(values=full_options if full_options else ['', '—'])
|
||||
var.set('')
|
||||
lbl_num.config(foreground='black')
|
||||
lbl_name.config(foreground='black', text=name)
|
||||
@@ -1935,13 +1936,16 @@ class DokoGenApp:
|
||||
# Текст показателя
|
||||
lbl_name = ttk.Label(row, text=name, wraplength=640, justify=tk.LEFT)
|
||||
lbl_name.pack(side=tk.LEFT)
|
||||
# Выбор значения: пусто / «—» (применим, без категории) / «не применим» / категории
|
||||
# Выбор значения:
|
||||
# - применимый показатель: пусто / «—» (применим, категория не присвоена) / III / II / I
|
||||
# - неприменимый к сфере: только «не применим» (заблокирован, авто-обоснование из словаря)
|
||||
var = tk.StringVar(value='')
|
||||
options = ['', '—', 'не применим']
|
||||
full_options = ['', '—']
|
||||
for cat in ('III', 'II', 'I'):
|
||||
v = values.get(cat, '')
|
||||
if v:
|
||||
options.append(f"{cat} категория: {v}")
|
||||
full_options.append(f"{cat} категория: {v}")
|
||||
options = full_options
|
||||
combo = ttk.Combobox(row, textvariable=var, state='readonly', width=34,
|
||||
values=options)
|
||||
combo.pack(side=tk.RIGHT, padx=6)
|
||||
@@ -1963,8 +1967,10 @@ class DokoGenApp:
|
||||
|
||||
if not applicable_here:
|
||||
# Показатель не применим для сферы объекта:
|
||||
# автоматически выбираем «не применим» и блокируем,
|
||||
# но даём кнопку «🔓» для разблокировки конкретного показателя
|
||||
# в списке только «не применим», выбран автоматически и заблокирован.
|
||||
# Кнопка «🔓» — разблокировать конкретный показатель (вернуть категории и «—»)
|
||||
options = ['не применим']
|
||||
combo.config(values=options)
|
||||
var.set('не применим')
|
||||
combo.config(state='disabled')
|
||||
lbl_num.config(foreground='gray')
|
||||
@@ -1973,12 +1979,12 @@ class DokoGenApp:
|
||||
btn_unlock = ttk.Button(row, text='🔓', width=3,
|
||||
command=lambda c=combo, v=var,
|
||||
ln=lbl_num, lname=lbl_name,
|
||||
b=None, nm=name: _unlock(c, v, ln, lname, nm))
|
||||
b=None, nm=name, fo=full_options:
|
||||
_unlock(c, v, ln, lname, nm, b, fo))
|
||||
btn_unlock.pack(side=tk.RIGHT, padx=(2, 0))
|
||||
# ссылка на кнопку для возможного удаления — храним в замыкании
|
||||
btn_unlock.config(command=lambda c=combo, v=var, ln=lbl_num,
|
||||
lname=lbl_name, b=btn_unlock, nm=name:
|
||||
_unlock(c, v, ln, lname, nm, b))
|
||||
lname=lbl_name, b=btn_unlock, nm=name, fo=full_options:
|
||||
_unlock(c, v, ln, lname, nm, b, fo))
|
||||
rows.append((num, name, values, var, applicable_here))
|
||||
|
||||
# Обоснование
|
||||
|
||||
Reference in New Issue
Block a user