Обновить
4K+
1

Разработчик Python / Энтузиаст ремонта ПК

0,2
Рейтинг
Отправить сообщение

Почему в CustomTkinter не работают Ctrl+C / Ctrl+V и как это починить

Писал админку на CustomTkinter и наткнулся на классический баг: стандартное контекстное меню (правая кнопка мыши) с «Копировать/Вставить» просто не работает. Точнее, оно появляется, но при нажатии ничего не происходит.

Проблема в том, что CTkEntry наследуется от tkinter, но не обрабатывает системные виртуальные события (<<Copy>>, <<Paste>>) так, как мы привыкли.

Как это выглядит в коде (не работает):

menu.add_command(label="Вставить", command=lambda: entry.event_generate("<<Paste>>"))

Как это реально починить:
Нужно обращаться напрямую к системному буферу обмена (clipboard) через методы самого виджета.

import tkinter as tk

def paste_text(entry_widget):
    try:
        text = entry_widget.clipboard_get()
        if entry_widget.selection_present():
            entry_widget.delete(tk.SEL_FIRST, tk.SEL_LAST)
        entry_widget.insert(tk.INSERT, text)
    except tk.TclError:
        pass

menu.add_command(label="Вставить", command=lambda: paste_text(my_entry))

Для «Копировать» логика похожая: проверяем selection_present(), берем selection_get() и кидаем в clipboard_append().

В итоге меню заработало идеально. Кто еще сталкивался с таким в CTk? Или вы юзаете pyperclip для таких задач?

Теги:
0
Комментарии0

Как отключить предзагрузку Windows, не убивая сжатие RAM

В прошлом посте я советовал отключать службу SysMain целиком, чтобы убрать тормоза с HDD. Но в комментариях справедливо заметили: вместе с ней мы убиваем и сжатие оперативной памяти, которое полезно даже на SSD.

Если хочется точечно убрать только предзагрузку (Prefetching), оставив сжатие, есть команды в PowerShell (от админа):

Disable-MMAgent -ApplicationPreLaunch
Disable-MMAgent -ApplicationLaunchPrefetching

После перезагрузки проверяем, что получилось:
Get-MMAgent

В выводе ApplicationPreLaunch и ApplicationLaunchPrefetching должны стать False, а MemoryCompression — остаться True.

Такой подход безопаснее: диск перестает постоянно шуршать при старте (как это было в моем кейсе с ноутом 2008 года), но система сохраняет быстрый доступ к памяти.

Кто пробовал так делать — есть разница в отзывчивости системы по сравнению с полным отключением SysMain?

Теги:
+3
Комментарии0

Лайфхак: как я ускорил загрузку старого ноутбука на Windows 10 в 3 раза

Всем привет! Хочу поделиться простым, но очень эффективным лайфхаком для тех, кто реанимирует старые ноутбуки (или просто хочет ускорить свою «десятку»).

У меня на руках оказался ThinkPad 2008 года с HDD. Загрузка занимала 5 минут, а диск в диспетчере задач был загружен на 100%.

Главный виновник — служба SysMain (бывший Superfetch). Она пытается кэшировать программы в оперативную память, но на старых HDD это вызывает дикие задержки при чтении.

Как отключить (безопасно):

  1. Win + R -> вводим services.msc.

  2. Находим SysMain, кликаем ПКМ -> Свойства.

  3. Жмем «Остановить», а в выпадающем списке «Тип запуска» выбираем «Отключена».

Также, если вы не пользуетесь поиском по файлам, можно отключить службу Windows Search (индексация на HDD тоже только тормозит систему).

Результат: загрузка упала с 5 минут до 1.5 минут. Диск в простое загружен на 1-5%.

Кто еще пробовал такие оптимизации на старом железе? Какие службы отключаете вы?

Теги:
-2
Комментарии11

Информация

В рейтинге
2 820-й
Откуда
Сызрань, Самарская обл., Россия
Зарегистрирован
Активность

Специализация

Десктоп разработчик
Стажёр
Python
SQL
Linux
ООП
Базы данных
Английский язык