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