import sys from pathlib import Path def wrap_text(text, max_width, char_width=7): words = text.split() lines = [] current_line = [] current_width = 0 for word in words: word_width = len(word) * char_width if current_width + word_width + char_width > max_width: lines.append(" ".join(current_line)) current_line = [word] current_width = word_width else: current_line.append(word) current_width += word_width + char_width # Добавляем пробел if current_line: lines.append(" ".join(current_line)) return lines def base_path(): # PyInstaller creates a temp folder and stores path in _MEIPASS try: # noinspection PyUnresolvedReferences,PyProtectedMember return Path(sys._MEIPASS).resolve() except AttributeError: return Path().resolve() def get_file(filename): return base_path() / "resources" / filename def on_ctrl_c(entry, event): # Копируем текст из поля ввода в буфер обмена text = entry.get() # Получаем текст из поля ввода entry.clipboard_clear() # Очищаем буфер обмена entry.clipboard_append(text) # Добавляем текст в буфер обмена def on_ctrl_v(entry, event): # Вставляем текст из буфера обмена в поле ввода clipboard_text = entry.clipboard_get() # Получаем текст из буфера обмена entry.insert("insert", clipboard_text) # Вставляем текст в позицию курсора def on_ctrl_a(entry, event): # Выделяем весь текст в поле ввода entry.select_range(0, 'end') # Выделяем текст от начала до конца def on_ctrl_left(entry, event): # Перемещаем курсор на одно слово влево entry.event_generate("") # Симулируем нажатие стрелки влево def on_ctrl_right(entry, event): # Перемещаем курсор на одно слово вправо entry.event_generate("") # Симулируем нажатие стрелки вправо def reg_ctrl_events(entry): # Привязка горячих клавиш с использованием lambda entry.bind("", lambda event: on_ctrl_c(entry, event)) # Копирование в буфер entry.bind("", lambda event: on_ctrl_v(entry, event)) # Вставка из буфера entry.bind("", lambda event: on_ctrl_a(entry, event)) # Выделение всего текста entry.bind("", lambda event: on_ctrl_left(entry, event)) # Перемещение курсора влево entry.bind("", lambda event: on_ctrl_right(entry, event)) # Перемещение курсора вправо