Уведомления

Группа в Telegram: @pythonsu

#1 Май 8, 2023 14:00:20

Vladej
Зарегистрирован: 2020-03-01
Сообщения: 15
Репутация: +  1  -
Профиль   Отправить e-mail  

Алгоритм для любителя "кодировать".

да, если нужна оболочка - Transler51, креплю файл

Прикреплённый файлы:
attachment Transler51.py (3,3 KБ)

Офлайн

#2 Май 8, 2023 15:14:56

Vladej
Зарегистрирован: 2020-03-01
Сообщения: 15
Репутация: +  1  -
Профиль   Отправить e-mail  

Алгоритм для любителя "кодировать".

py.user.next(self), только что напоролся на один старый фильм. Вы человек внимательный, посмотрите про некую “аутентичность”, это касается темы про “дураков” в мире, буквально несколько первых минут:
https://youtu.be/nflIrZT7a9k?t=2484

Отредактировано Vladej (Май 8, 2023 15:17:26)

Офлайн

#3 Май 8, 2023 22:30:40

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9796
Репутация: +  849  -
Профиль   Отправить e-mail  

Алгоритм для любителя "кодировать".

Vladej
Вот с чего я должен начинать поиск, абсолютно не зная направления?
1)
Сначала я всё прочитал.

Так я составил общую картину программы и представил её блок-схему.

1. Открывается окно.
2. В окне что-то нажимается.
3. Происходит какое-то действие.
4. Происходит какая-то индикация результата.
5. Окно возвращается в исходное состояние.

2)
Затем я разделил этот код на то, что ты взял где-то, и то, что ты писал сам.

То, что ты взял где-то, скорее всего, написано тем, кто умеет разрабатывать и, соответственно, соблюдает все правила разработки. А то, что ты писал сам, требует особого внимания, потому что ты книг не читаешь, а знать тебе всё хочется. Соответственно, и глупых ошибок в твоих строках больше, чем у нормального разработчика, который всё делает так, как все нормальные разработчики.

Так я нашёл у тебя тупой with и так я нашёл твой метод Flags.
Тупой with закрывает файл, потому что ты не читал, как работает with, а также не читал многочисленные примеры с использованием with, которые пишут в книжках по питону, так как ты не читаешь книжек вообще никаких. А метод Flags сразу привлёк моё внимание потому, что он назван неправильно, так как ты не читал такую элементарную вещь как PEP8 и поэтому не знаешь, как правильно именовать разные элементы в питоне. Так я нашёл фрагменты кода, к которым нужно приглядеться особо и проверить там всё.

3)
Дальше я начал проверять подозреваемые фрагменты кода, установленные на предыдущих этапах, на связь с треем, с которым у тебя проблемы и из которого надо разворачивать что-то.

Так я взглянул на метод с with и увидел, что этот метод практически никак не взаимодействует с треем. Поэтому его я отбросил на первое время.

Дальше я взглянул на метод Flags и увидел странную хрень, которую не видел ни в одной книжке по Qt и ни в одном коде Qt, которых я прочитал несколько сотен до этого. Я увидел операцию XOR с флажками окна, которую я видел только в кодах, относящихся к шифрованию и генерации хеш-сумм. Даже в кодах, касающихся работы с аппаратурой через порты, я такой операции не видел.

Дальше я стал анализировать, зачем ты туда записал операцию XOR, зачем это могло тебе понадобиться, такому ничего не читающему. И так я понял, что ты пытаешься снять флажок вот этот. Также я предположил, что ты скупердяй, раз пришёл за бабками в программирование (годами тебя тут не было и тут ты припёрся, как раз когда реклама айтишников пошла из всех щелей и в том числе из твоего телевизора, который ты смотришь), а значит ты стопудово будешь ещё и экономить методы и одним методом так умно и включать флажки, и выключать флажки. А чтобы одним экономным методом это делать и в одной экономной строчке, тебе, естественно, пришлось выдумывать, как это сделать, и ты нашёл для этого операцию XOR.

Вот и вся разгадка. Значит, ты, не читая книг, решил познать побитовые операции просто так, из космоса, как ты это обычно делаешь в своей сфере, из которой ты в программирование пришёл и вообще в айти. Стратегия у тебя такая: если я чего-то не знаю, то я не буду ничего читать про это, я просто скажу себе, что я это знаю, потом я в это поверю сам, а потом буду всем рассказывать, что я это знаю с большой уверенностью, так как я в это верю сам полностью, и таким образом все поверят, что я это знаю и мы все будем верить, что я это знаю, а знать это при этом мне будет особо не нужно и книжки читать про это, соответственно, тоже.

Если бы ты читал книжки, то ты бы увидел там примеры кода, а в них написано, как ставить флажки и как снимать флажки.

Я же, изучая C ещё, в 2008-м году дошёл там в книжке по C до упражнений на побитовые операции и написал десяток функций, где нужно было брать биты, удалять биты, вставлять биты, искать биты. Один раз вот это прочитал, проделал, запомнил, а теперь годами этим пользуюсь. Мне даже книжку по Qt читать не надо или коды на Qt, чтобы знать, как именно снять такой-то флажок, потому что это просто операция с битами, которая ничем не отличается от всех других операций с битами, которые я прошёл больше десяти лет назад.

К тому же, если подниматься на материи повыше, то в программировании (в теории программирования) есть такой пункт, что надо всё разделять, отделять друг от друга, делать всё это независимым друг от друга и работать с этими отдельными независимыми кусочками по отдельности. Принцип этот называется “разделяй и властвуй”. Но тебе он незнаком, потому что ты ничего не читаешь, так как всё можешь узнать из космоса или с помощью аутотренинга, и поэтому ты всё сливаешь в одно, чтобы оно умнее выглядело, типа одна строчка лучше, чем десять. Это кажется тебе правильным, как и всем новичкам, которые наступают на эти и другие одни и те же разложенные грабли, когда только заходят в программирование. Это типа “я понесу все яйца в одной корзине, потому что две корзины или десять корзин покупать глупо; лучше иметь одну корзину и в ней сразу за один раз перенести все яйца, так как это экономнее по корзинам, по времени и по месту, поэтому я умный”. В итоге ты поскальзываешься и падаешь вместе с этой одной корзиной, в которой у тебя все яйца лежат, и они все разбиваются. Оказалось, что аутотренинг, повышающий умность искусственным путём, не помог ни устоять на ногах, ни спасти корзину с яйцами от гравитации.



Отредактировано py.user.next (Май 8, 2023 22:39:50)

Офлайн

#4 Май 9, 2023 01:12:43

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1337
Репутация: +  116  -
Профиль   Отправить e-mail  

Алгоритм для любителя "кодировать".

Vladej
Поделитесь опытом, как вы строите своё изучение языка, каков алгоритм у вас сложился, который облегчает это занятие?

Люди создали нейросети по своему образу и подобию и они работают. Нейросеть как структура сама по себе бесполезна без обучения. Через нее прогоняют определенную информацию, и так у нее складывается массив данных образно говоря из ассоциаций, паттернов.

Т.е прогоняем через нее всю документацию по Qt, потом еще кучу кодов написанных кем-то и оцененных как полезные, какие-нибудь книги. И когда потом задаешь вопрос ей, твои слова для нее - это ассоциации с ее данными. Вот она выдает ответ.

Так человек такая-же нейросеть, только биологическая. Все что когда либо загрузишь в себя, любую информацию, она останется в тебе как ассоциация, с которой потом будешь работать. Вот py.user.next тебе про это говорит, что просто бери и читай книги, освой технику скорочтения, видео с хорошим, подходящим контентом. Просматривай кучу кодов кто как пишет.

И когда нужно будет что-то писать, эта информация должна всплывать из сознания, тут конечно уже от человека зависит, у кого какая память и тд.

Я вот тоже не могу себя заставить читать, как-то не приучен, утомляюсь быстро от чтения, так вот я ищу информацию в интернете исходя из вопроса - О чем я не знаю, что поможет мне решить задачу?. Часто задаюсь вопросом ни как делать?, а почему так нужно делать?

Обладая нужными компетенциями, можно сделать все что угодно.По аналогии с нейросетью нужно задаться вопросом, а какая ценная информация в тебе заложена?, сколько ее там? Если ее брать из космоса, ну незнаю, может бывают и такие уникумы.

Короткий ответ: загружать в себя нужную информацию и осмысливать ее потом

Офлайн

#5 Май 9, 2023 02:48:24

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9796
Репутация: +  849  -
Профиль   Отправить e-mail  

Алгоритм для любителя "кодировать".

Vladej
Программка запускается в трее и включается по горячей клавише, чтобы сделать скриншот участка. Появляется перекрестие и всё такое далее. Если я делаю второй следом скриншот, то программка мигает в панели задач, и перекрестие появляется только после развёртывания из панели.
В общем, я её запустил под Linux с заглушками и потестировал. Дело не в флажках.

Вот в этом методе закомментировал self.hide() и ничего не изменилось
  
    def activateSnipping(self):
        self.snipper.showFullScreen()
        QtWidgets.QApplication.setOverrideCursor(QtCore.Qt.CrossCursor)
        #self.hide()
Так зачем нужен self.hide() этот?

А вообще, запусти консоль в винде, перейди в консоли в директорию программы и программу запусти в консоли, чтобы в консоль шёл вывод из программы, если там какие-то ошибки выпадают.



Офлайн

#6 Май 11, 2023 14:04:53

Vladej
Зарегистрирован: 2020-03-01
Сообщения: 15
Репутация: +  1  -
Профиль   Отправить e-mail  

Алгоритм для любителя "кодировать".

Здравствуйте. Вкратце пробегусь, потом по теме.

py.user.next
Тупой with закрывает файл, потому что ты не читал, как работает with
……….
Так я взглянул на метод с with и увидел, что этот метод практически никак не взаимодействует с треем
Задача tesseract (OCR) - распознание текста на картинке и последующая фиксация текста в .txt.
Единственный with в коде - с открытием файла .txt происходит перезапись файла и затем закрытие файла для того, чтобы def translate переводчик открыл его для чтения и последующего перевода на русский. Может я что-то не догоняю с with?
Догнал. Удалил эти строчки, связанные с with. Спасибо за указание. Ранее на определённом этапе мне нужно было лицезреть результат OCR, хотя достаточно было просто прописать print(text). Я старался следовать логике, а она в определённом месте оказалась излишней. На раннем этапе код выглядел несколько иначе, я пытался исследовать всё и вся. Но для конечного результата нужно подчищать свой же мусор.

Я долгое время не пользовался своим переводчиком, который “написал” в 2020, и забыл hotkeys: выделил - нажал - перевод. Трей будет напоминать.
py.user.next
Дальше я стал анализировать, зачем ты туда записал операцию XOR, зачем это могло тебе понадобиться, такому ничего не читающему. И так я понял, что ты пытаешься снять флажок вот этот. Также я предположил, что ты скупердяй, раз пришёл за бабками в программирование
Всё намного проще. В 2020 очень часто переводил комменты в коде с китайского, турецкого, ну и с англ. тоже. И чтобы окно переводчика не мельтешило перед глазами, я искал способ закрепить OnTop с помощью кнопки. Долго искал. Попался единственный случай из stackoverflow, там была стрелочка вверх. Я искал способ логического оформления этой функции, а оказалось, что достаточно прописать оператор, который работает как тумблер, никакой логики не надо. Дана кнопка, ей приписывается def, а в ней прописывается “тумблер”. Я пытался изобрести велосипед, а он уже существовал в одной строчке кода.

Я веду дневник “открытий” в коде python, и по случаю забил в него список операторов. Та стрелочка - побитовое ИЛИ НЕ. Откуда я мог понять, что код - это не только логика, но и тумблеры? Стрелочку я больше ни разу не встречал, а вот столбик (ИЛИ) довольно часто. Исправил код на:
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
self.show()
Спасибо за указание. Просто впихнул в код автоматом, но работал же.
Да, я тогда не знал или не заметил расширение Comment Translate для VSCode.
py.user.next
К тому же, если подниматься на материи повыше, то в программировании (в теории программирования) есть такой пункт, что надо всё разделять, отделять друг от друга, делать всё это независимым друг от друга и работать с этими отдельными независимыми кусочками по отдельности. Принцип этот называется “разделяй и властвуй”.
Именно так и поступаю. Берёшь чей-то замысловатый код, клонируешь его, и методом исключения “строгаешь” в поисках того, что тебе нужно. Ваша формула “разделяй и властвуй” - это некорректно, хотя смысл понял.
py.user.next
годами тебя тут не было и тут ты припёрся, как раз когда реклама айтишников пошла из всех щелей и в том числе из твоего телевизора, который ты смотришь
Мир не стоит на месте, если вы считаете, что кто-то припёрся из альдебарана, значит вы чувствуете себя тут лишним (“понаехали”). А телик я продал в 2021. И на компе не смотрю телеканалы. Тем не менее я тоже заметил обилие рекламы айтишников, это просто знак времени, что-то этот знак означает. Но это другая тема.
py.user.next
Так зачем нужен self.hide() этот?
Вы извините меня, но напомню, что я не программист, это просто очень интересное хобби. Хайд нужен чтобы скрыть, к примеру, окно скриншотера при скрине экрана монитора. Просто он был вставлен вместе с другим кодом на раннем этапе, и я забыл почистить мусор. Но этот мусор работе кода не мешал, потому и не замечал его. Спасибо за указание.
……. продолжу чуть позже, времени навалом, я на больничном.

Офлайн

#7 Май 12, 2023 02:16:34

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9796
Репутация: +  849  -
Профиль   Отправить e-mail  

Алгоритм для любителя "кодировать".

Vladej
Может я что-то не догоняю с with?
Да, что такое with и зачем его делать? Называется слышал звон, да не знаю где он. Типа увидел with, значит вставил with сразу.

Файл можно открыть, записать и закрыть так
  
f = open('file.txt', 'w')
f.write('text')
f.close()

Но делают это обычно так
  
with open('file.txt', 'w') as f:
    f.write('text')
Куда делся f.close()? Вот он как раз внутри with и находится.
Если бы ты прочитал хоть одну книгу по питону для новичков, начинающих и так далее, ты бы везде увидел такие with'ы, привык их видеть, и когда писал бы его, то не стал бы ставить туда f.close(), потому что начитанность кодом не дала бы тебе этого сделать; для тебя бы этот f.close() показался странным, не к месту и так далее.

А так ты делаешь именно тупость
  
with open('file.txt', 'w') as f:
    f.write('text')
    f.close()
Типа чтобы по-умному всё было, ты используешь with, но тут же прокалываешься и используешь f.close(), который повторно пытается файл закрыть закрытый. Это тебе повезло, что это питон и он закрытый файл повторно закрывать не станет, а просто сделает nop (no operation), но в другом языке программирования такой код выпадет с ошибкой, поэтому за такими вещами нужно строго следить. Открывать открытые файлы или закрывать закрытые файлы нельзя.

Оператор with, вообще по своей сути, запускает скрытый метод __enter__() при создании объекта и запускает скрытый метод __exit__() при разрушении объекта. И вот для файловых объектов в этом скрытом методе __exit__() есть вызов obj.close() внутри.

Это пример
  
>>> class A:
...     def __init__(self):
...         self.name = 'nothing'
...     def __enter__(self):
...         self.name = 'cat'
...         return self
...     def __exit__(self, et, ev, tb):
...         self.name = 'dog'
...     def __str__(self):
...         return self.name
... 
>>> print(A())
nothing
>>>     
... with A() as obj:
...     print(obj)
... 
cat
>>> print(obj)
dog
>>>

Vladej
Но для конечного результата нужно подчищать свой же мусор.
Так тебе же об этом и говорят: никто не пишет программы сразу в коде. Сначала делается полное словесное описание алгоритма, потом по этому полному словесному описанию, сделанному до конца, строится блок-схема, потом по этой блок-схеме, сделанной до конца, пишется псевдокод, а потом уже по этому псевдокоду, сделанному до конца, пишется конечный код. Когда ты пишешь код, у тебя уже всё лишнее вычищено и переделано сто раз на предыдущих этих этапах. Сначала ты в вузе сидишь и пишешь это всё вручную в тетради, потом ты там это всё проделываешь уже в программах, а потом ты уже это всё проделываешь в голове только, потому что оно переходит в навыки мышления. Поэтому я вот и могу просто идти по улице и писать программу так, а потом прихожу домой и записываю её готовую в компьютер. Разработка в голове вся идёт. В компе ты только записываешь уже готовое.

Vladej
я искал способ закрепить OnTop с помощью кнопки. Долго искал. Попался единственный случай из stackoverflow, там была стрелочка вверх.
Да это хреновый способ, он неочевидный.
Ставить флаг надо так
  
flag = flag | mask
Убирать флаг надо так
  
flag = flag & ~mask
Всё. Вот это идиомы, в которых точно не будет никаких ошибок. Все их знают и ни у кого не возникнет вопросов к ним, и там точно ничего не пропустишь и никакой флажок случайно не снимешь.

Вот твой тумблер
  
if not flag & mask:
    flag = flag | mask
else:
    flag = flag & ~mask
Ты вот писал про истребитель F-16, у которого в программном обеспечении миллион строк. Так там миллион строк вот таких, где четыре строки вместо одной. Они ясные, понятные, они без ошибок, самолёт не упадёт из-за тупого флажка какого-то, снятого или установленного из-за побочного эффекта от какой-то не той операции, применённой не в то время не в том месте.
В этот раз тебе повезло, что XOR переключает всё правильно, а в другой раз не повезёт. Ты будешь думать, что на неё можно опереться, положиться, а она тебе даст какой-нибудь эффект ненужный и ты даже знать об этом не будешь. Ну, ты узнаешь тогда, когда самолёт упадёт. Где-то там уже была история, что ошибка в определении уровня моря приводила к тому, что у самолёта становилась отрицательная высота и самолёт то ли разбивался там, потому что автопилот направлял его вниз, то ли просто начинал подниматься вверх, хотя для этого не было поводов. Когда стали выяснять, оказалось, что там в коде была ошибка переполнения целочисленной переменной, неучтённая, пропущенная программистом. Задайся вопросом: как программист, которого подпустили к написанию кода для самолёта, пропустил такую наитупейшую ошибку на уровне школьника? Это не невнимательность. Это он просто нарушил правила кодирования. Есть правила и их надо соблюдать, а он ими пренебрёг, где-то там что-то сократил до одной строки типа по-умному и в итоге из-за этого всё накрылось. Никого не интересует, сколько у тебя там строк в коде, главное - летит ли самолёт правильно.

К этому тумблеру пока вопросов нет, он только написан неправильно в виде кода, неправильный приём применён. Применён хак, а в хаках прячутся ошибки очень хорошо, которые могут годами оставаться незаметными, а потом выстреливать где-нибудь, когда этот код где-нибудь работает уже и от него что-то зависит.

Vladej
Та стрелочка - побитовое ИЛИ НЕ
Смотри
@ - собачка
^ - циркумфлекс (каретка ещё)
& - амперсанд
| - вертикальная черта (труба ещё)
# - октоторп (решётка ещё)
/ - слеш (косая черта ещё)
\ - бэкслеш (обратная косая черта ещё)
И циркумфлекс - это операция XOR (exclusive OR). Это исключающее ИЛИ.
Если при обычном OR (ИЛИ) мы имеет такую таблицу истинности
1 OR 1 = 1
1 OR 0 = 1
0 OR 1 = 1
0 OR 0 = 0
То при исключающем OR (ИЛИ) мы из таблицы истинности OR (ИЛИ) исключаем одну строку.
Получается такая таблица истинности
1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 1 = 1
0 XOR 0 = 0
То есть это всё точно так же, как в OR (ИЛИ), только первая строка исключается и заменяется на ноль.

Используется операция XOR в операциях, нужных для шифрования, для хеширования, в общем в криптографии, для того, чтобы поменять битовый набор и что-то запутать, создать какую-то неопределённость. Вот алгоритм упаковки данных в RAR построен на этой операции, поэтому запароленные RAR-архивы так сложно расшифровать и они считаются чуть ли не аналогом шифрованных контейнеров.

Так что если ты применяешь операции для шифрования в контексте установки и снятия флажков, а операции для установки и снятия флажков применяешь в шифровании, то рано или поздно ты получишь во флажках ошибку какую-нибудь, а в шифровании ты тоже получишь ошибку в шифровании. В таком случае у тебя упадёт какой-нибудь самолёт, а очень сильно зашифрованный секретный документ расшифрует какой-то школьник из пятого класса. Так что это всё тоже не просто так делается.

Vladej
Исправил код на:
  
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
self.show()
Не исправляй, он пока работает. Ищи ошибку свою по сворачивания окна пока. Не надо 100500 ошибок сразу искать и исправлять. Исправляй по одной ошибке, но полностью. Одну исправил ошибку - к следующей переходишь. Следующую исправил ошибку - к следующей за следующей переходишь. И так далее. Твоя работа должна идти так, что у тебя всё время позади остаётся правильный код, который проверен и который больше проверять не надо, в моменте ты работаешь с каким-то небольшим участком кода, который ты можешь охватить мысленно полностью, а впереди вот остаётся всё только непроработанное. И так ты переводишь постепенно код из неизвестного состояния в проверенное состояние через узкое окно. Это как есть пирог или торт. Вот ты бы стал сразу весь торт засовывать в рот? Это нереально. А вот съесть его по маленьким кусочкам можно весь часа за три или за день там. И при этом он будет весь съеден идеально. С кодом точно так же, так миллионы строк и пишутся, про которые ты недоумеваешь.

Vladej
Ваша формула “разделяй и властвуй” - это некорректно
Это не моя формула, это общеизвестная формула, которую ты прочитал бы в книжках, если бы хотя бы одну прочитал. Опять свою ахинею несёшь про то, что правильно и что неправильно. Ты профанацией занимаешь - невежественным обесцениванием по причине собственной дурости. Так что не спорь, а слушай. Потом засядешь с книжками и будешь там сам с собой соглашаться и опровергать.

Пока что баг ты не исправил. Поэтому надо найти его причину и исправить. Чтобы найти причину, ищи в коде места, где идёт управление окном и управление треем. Где окно там показывается, скрывается, трей активируется, деактивируется, - такие места. Иногда что-нибудь комментируй в коде, запускай его и смотри, как программа работает без этого. Так ты увидишь наглядно, что в коде на что в запущенной программе влияет. Это навык отладки, которого у тебя тоже нихрена нет. Все эти навыки надо вырабатывать через постоянную практику, они не могут сами по себе из космоса появиться.



Отредактировано py.user.next (Май 12, 2023 05:56:40)

Офлайн

#8 Май 13, 2023 18:32:18

Vladej
Зарегистрирован: 2020-03-01
Сообщения: 15
Репутация: +  1  -
Профиль   Отправить e-mail  

Алгоритм для любителя "кодировать".

py.user.next
Куда делся f.close()? Вот он как раз внутри with и находится
я это уже понял, понял что сценарий уже прописан. Но по коду (“походу”) этого не видно. Мы же код читаем, а не книжки, и как понять по коду, что любое действие с файлом - чтение, перезапись, дозапись - уже подразумевает полностью законченное действие?

не знаю как вставить сюда картинки, только через прикреплённый файл, ну и на том спасибо - лучшее враг хорошего, как говорится.

Прикреплённый файлы:
attachment f.png (36,5 KБ)

Офлайн

#9 Май 13, 2023 18:39:32

Vladej
Зарегистрирован: 2020-03-01
Сообщения: 15
Репутация: +  1  -
Профиль   Отправить e-mail  

Алгоритм для любителя "кодировать".

py.user.next
Сначала делается полное словесное описание алгоритма
ну а что мы все делаем? предварительно “филология”, потом конкретика. Как говорил некто: “без общего не понять частного”.
py.user.next
И циркумфлекс - это операция XOR
мне до самой смерти не понадобятся “эти” операции. Не начинайте даже.

Прикреплённый файлы:
attachment Video_2023-05-13_164045.wmv (388,0 KБ)

Офлайн

#10 Май 13, 2023 19:03:13

Vladej
Зарегистрирован: 2020-03-01
Сообщения: 15
Репутация: +  1  -
Профиль   Отправить e-mail  

Алгоритм для любителя "кодировать".

py.user.next
Не исправляй, он пока работает. Ищи ошибку свою по сворачивания окна пока.
эта ошибка переросла в нечто большее. Я прилагаю видео, там увидете, как перекрестие скриншотера отчасти выполняет роль клика мыши. Перелопатил кучу образцов кода с гитхаба, но только пара-тройка выполнялась корректно. Есть подозрение, что прежде, чем делать обрезку участка, делается клон экрана монитора. И уже по этому клону выполняются все операции. Но это не всегда явно, возможно, что тут дело обстоит проще, но только как.

Отладка кода в VSCode происходит по клавише F5. Запускаю отладку и сразу же в блокноте открываю какое-нибудь модальное окно, и наблюдаю, как реагирует мод. окно на работу скрина. Последний в видео вариант - это клавиша PrntScr. Она ничего не трогает, просто фотографирует как есть. Вот пытаюсь понять, как это реализовать в своей третьей программке. Пока не дошло. В большинстве кодов с гита перекрестие скрина закрывает мод. окно. Это та же самая “кликабельность” по сворачиванию окна, которой быть не должно.

Как вы считаете, действительно ли дело в клонировании изображения?

“Прикреплённый файл слишком большой”. 16 МВ. Ладно, дам ссылочку на:
https://disk.yandex.ru/i/uI6bkF4oj7AZsg

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version