66 lines
2.9 KiB
Python
66 lines
2.9 KiB
Python
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("<Left>") # Симулируем нажатие стрелки влево
|
||
|
||
def on_ctrl_right(entry, event):
|
||
# Перемещаем курсор на одно слово вправо
|
||
entry.event_generate("<Right>") # Симулируем нажатие стрелки вправо
|
||
|
||
def reg_ctrl_events(entry):
|
||
# Привязка горячих клавиш с использованием lambda
|
||
entry.bind("<Control-c>", lambda event: on_ctrl_c(entry, event)) # Копирование в буфер
|
||
entry.bind("<Control-v>", lambda event: on_ctrl_v(entry, event)) # Вставка из буфера
|
||
entry.bind("<Control-a>", lambda event: on_ctrl_a(entry, event)) # Выделение всего текста
|
||
entry.bind("<Control-Left>", lambda event: on_ctrl_left(entry, event)) # Перемещение курсора влево
|
||
entry.bind("<Control-Right>", lambda event: on_ctrl_right(entry, event)) # Перемещение курсора вправо
|