From 463745123c76797933c7cd2d95e9ab8c57dbefdb Mon Sep 17 00:00:00 2001 From: prog1764 Date: Tue, 4 Aug 2026 15:56:52 +0400 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B2=D1=8B=D0=BF=D0=B0=D0=B4=D0=B0?= =?UTF-8?q?=D1=8E=D1=89=D0=B8=D0=B5=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D0=B2=D0=B0=D1=8E=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=BB=D0=B8=D0=BA=D0=BE=D0=BC=20=D0=B2=20=D0=BB?= =?UTF-8?q?=D1=8E=D0=B1=D0=BE=D0=BC=20=D0=BC=D0=B5=D1=81=D1=82=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8F=20(=D0=BD=D0=B5=20=D1=82=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=BA=D0=BE=20=D0=BF=D0=BE=20=D1=81=D1=82=D1=80=D0=B5?= =?UTF-8?q?=D0=BB=D0=BA=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлен обработчик _combo_open для всех комбобоксов: клик по полю раскрывает список, не нужно тянуть курсор в правый угол к стрелке. --- dokogen/ui.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/dokogen/ui.py b/dokogen/ui.py index 37b668c..1b49ba2 100644 --- a/dokogen/ui.py +++ b/dokogen/ui.py @@ -796,6 +796,7 @@ class DokoGenApp: # Сфера деятельности — словарик + выпадающий список ttk.Label(main_frame, text="Сфера деятельности:").grid(row=1, column=0, sticky=tk.W, pady=2) self.is_sphere_combo = ttk.Combobox(main_frame, width=68, state='readonly') + self.is_sphere_combo.bind('', self._combo_open) self.is_sphere_combo.grid(row=1, column=1, padx=8, sticky=tk.EW, pady=1) try: import json as _json @@ -808,6 +809,7 @@ class DokoGenApp: # Тип объекта — словарик + выпадающий список ttk.Label(main_frame, text="Тип объекта:").grid(row=2, column=0, sticky=tk.W, pady=2) self.is_object_type_combo = ttk.Combobox(main_frame, width=68, state='readonly') + self.is_object_type_combo.bind('', self._combo_open) self.is_object_type_combo.grid(row=2, column=1, padx=8, sticky=tk.EW, pady=1) try: _ot = os.path.join(os.path.dirname(__file__), 'dictionaries', 'object_types.json') @@ -819,6 +821,7 @@ class DokoGenApp: # Архитектура объекта — словарик + выпадающий список ttk.Label(main_frame, text="Архитектура объекта:").grid(row=3, column=0, sticky=tk.W, pady=2) self.is_architecture_combo = ttk.Combobox(main_frame, width=68, state='readonly') + self.is_architecture_combo.bind('', self._combo_open) self.is_architecture_combo.grid(row=3, column=1, padx=8, sticky=tk.EW, pady=1) try: _ar = os.path.join(os.path.dirname(__file__), 'dictionaries', 'architectures.json') @@ -830,6 +833,7 @@ class DokoGenApp: # Типовой отраслевой объект КИИ — словарик + выпадающий список ttk.Label(main_frame, text="Типовой отраслевой объект КИИ:").grid(row=4, column=0, sticky=tk.W, pady=2) self.is_typical_object_combo = ttk.Combobox(main_frame, width=68, state='readonly') + self.is_typical_object_combo.bind('', self._combo_open) self.is_typical_object_combo.grid(row=4, column=1, padx=8, sticky=tk.EW, pady=1) try: _to = os.path.join(os.path.dirname(__file__), 'dictionaries', 'typical_objects.json') @@ -868,6 +872,7 @@ class DokoGenApp: # Категория сети — словарик ttk.Label(net_frame, text="Категория сети электросвязи:").grid(row=1, column=0, sticky=tk.W, pady=2) self.is_net_category_combo = ttk.Combobox(net_frame, width=68, state='readonly') + self.is_net_category_combo.bind('', self._combo_open) self.is_net_category_combo.grid(row=1, column=1, padx=8, sticky=tk.EW, pady=1) try: import json as _json @@ -885,6 +890,7 @@ class DokoGenApp: # Цель взаимодействия — словарик ttk.Label(net_frame, text="Цель взаимодействия с сетью электросвязи:").grid(row=3, column=0, sticky=tk.W, pady=2) self.is_net_purpose_combo = ttk.Combobox(net_frame, width=68, state='readonly') + self.is_net_purpose_combo.bind('', self._combo_open) self.is_net_purpose_combo.grid(row=3, column=1, padx=8, sticky=tk.EW, pady=1) try: _np = os.path.join(os.path.dirname(__file__), 'dictionaries', 'net_purposes.json') @@ -896,6 +902,7 @@ class DokoGenApp: # Способ взаимодействия — словарик ttk.Label(net_frame, text="Способ взаимодействия (тип доступа):").grid(row=4, column=0, sticky=tk.W, pady=2) self.is_net_method_combo = ttk.Combobox(net_frame, width=68, state='readonly') + self.is_net_method_combo.bind('', self._combo_open) self.is_net_method_combo.grid(row=4, column=1, padx=8, sticky=tk.EW, pady=1) try: _nm = os.path.join(os.path.dirname(__file__), 'dictionaries', 'net_methods.json') @@ -1642,6 +1649,14 @@ class DokoGenApp: except Exception as e: messagebox.showerror("Ошибка", f"Не удалось загрузить словарь: {e}") + def _combo_open(self, event): + """Клик в любом месте комбобокса раскрывает список (не только по стрелке).""" + try: + event.widget.event_generate('') + except Exception: + pass + return 'break' + # ==================== ОКВЭД ==================== def _load_okved_dict(self): """Загружает словарь ОКВЭД (dictionaries/okved.json)."""