Форум сайта python.su
да, если нужна оболочка - Transler51, креплю файл
Прикреплённый файлы:
Transler51.py (3,3 KБ)
Офлайн
py.user.next(self), только что напоролся на один старый фильм. Вы человек внимательный, посмотрите про некую “аутентичность”, это касается темы про “дураков” в мире, буквально несколько первых минут:
https://youtu.be/nflIrZT7a9k?t=2484
Отредактировано Vladej (Май 8, 2023 15:17:26)
Офлайн
Vladej1)
Вот с чего я должен начинать поиск, абсолютно не зная направления?
Отредактировано py.user.next (Май 8, 2023 22:39:50)
Офлайн
Vladej
Поделитесь опытом, как вы строите своё изучение языка, каков алгоритм у вас сложился, который облегчает это занятие?
Офлайн
VladejВ общем, я её запустил под Linux с заглушками и потестировал. Дело не в флажках.
Программка запускается в трее и включается по горячей клавише, чтобы сделать скриншот участка. Появляется перекрестие и всё такое далее. Если я делаю второй следом скриншот, то программка мигает в панели задач, и перекрестие появляется только после развёртывания из панели.
def activateSnipping(self): self.snipper.showFullScreen() QtWidgets.QApplication.setOverrideCursor(QtCore.Qt.CrossCursor) #self.hide()
Офлайн
Здравствуйте. Вкратце пробегусь, потом по теме.
py.user.nextЗадача tesseract (OCR) - распознание текста на картинке и последующая фиксация текста в .txt.
Тупой with закрывает файл, потому что ты не читал, как работает with
……….
Так я взглянул на метод с with и увидел, что этот метод практически никак не взаимодействует с треем
py.user.nextВсё намного проще. В 2020 очень часто переводил комменты в коде с китайского, турецкого, ну и с англ. тоже. И чтобы окно переводчика не мельтешило перед глазами, я искал способ закрепить OnTop с помощью кнопки. Долго искал. Попался единственный случай из stackoverflow, там была стрелочка вверх. Я искал способ логического оформления этой функции, а оказалось, что достаточно прописать оператор, который работает как тумблер, никакой логики не надо. Дана кнопка, ей приписывается def, а в ней прописывается “тумблер”. Я пытался изобрести велосипед, а он уже существовал в одной строчке кода.
Дальше я стал анализировать, зачем ты туда записал операцию XOR, зачем это могло тебе понадобиться, такому ничего не читающему. И так я понял, что ты пытаешься снять флажок вот этот. Также я предположил, что ты скупердяй, раз пришёл за бабками в программирование
py.user.nextИменно так и поступаю. Берёшь чей-то замысловатый код, клонируешь его, и методом исключения “строгаешь” в поисках того, что тебе нужно. Ваша формула “разделяй и властвуй” - это некорректно, хотя смысл понял.
К тому же, если подниматься на материи повыше, то в программировании (в теории программирования) есть такой пункт, что надо всё разделять, отделять друг от друга, делать всё это независимым друг от друга и работать с этими отдельными независимыми кусочками по отдельности. Принцип этот называется “разделяй и властвуй”.
py.user.nextМир не стоит на месте, если вы считаете, что кто-то припёрся из альдебарана, значит вы чувствуете себя тут лишним (“понаехали”). А телик я продал в 2021. И на компе не смотрю телеканалы. Тем не менее я тоже заметил обилие рекламы айтишников, это просто знак времени, что-то этот знак означает. Но это другая тема.
годами тебя тут не было и тут ты припёрся, как раз когда реклама айтишников пошла из всех щелей и в том числе из твоего телевизора, который ты смотришь
py.user.nextВы извините меня, но напомню, что я не программист, это просто очень интересное хобби. Хайд нужен чтобы скрыть, к примеру, окно скриншотера при скрине экрана монитора. Просто он был вставлен вместе с другим кодом на раннем этапе, и я забыл почистить мусор. Но этот мусор работе кода не мешал, потому и не замечал его. Спасибо за указание.
Так зачем нужен self.hide() этот?
Офлайн
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')
with open('file.txt', 'w') as f: f.write('text') f.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
VladejСмотри
Та стрелочка - побитовое ИЛИ НЕ
@ - собачка
^ - циркумфлекс (каретка ещё)
& - амперсанд
| - вертикальная черта (труба ещё)
# - октоторп (решётка ещё)
/ - слеш (косая черта ещё)
\ - бэкслеш (обратная косая черта ещё)
1 OR 1 = 1
1 OR 0 = 1
0 OR 1 = 1
0 OR 0 = 0
1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 1 = 1
0 XOR 0 = 0
VladejНе исправляй, он пока работает. Ищи ошибку свою по сворачивания окна пока. Не надо 100500 ошибок сразу искать и исправлять. Исправляй по одной ошибке, но полностью. Одну исправил ошибку - к следующей переходишь. Следующую исправил ошибку - к следующей за следующей переходишь. И так далее. Твоя работа должна идти так, что у тебя всё время позади остаётся правильный код, который проверен и который больше проверять не надо, в моменте ты работаешь с каким-то небольшим участком кода, который ты можешь охватить мысленно полностью, а впереди вот остаётся всё только непроработанное. И так ты переводишь постепенно код из неизвестного состояния в проверенное состояние через узкое окно. Это как есть пирог или торт. Вот ты бы стал сразу весь торт засовывать в рот? Это нереально. А вот съесть его по маленьким кусочкам можно весь часа за три или за день там. И при этом он будет весь съеден идеально. С кодом точно так же, так миллионы строк и пишутся, про которые ты недоумеваешь.
Исправил код на:self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) self.show()
VladejЭто не моя формула, это общеизвестная формула, которую ты прочитал бы в книжках, если бы хотя бы одну прочитал. Опять свою ахинею несёшь про то, что правильно и что неправильно. Ты профанацией занимаешь - невежественным обесцениванием по причине собственной дурости. Так что не спорь, а слушай. Потом засядешь с книжками и будешь там сам с собой соглашаться и опровергать.
Ваша формула “разделяй и властвуй” - это некорректно
Отредактировано py.user.next (Май 12, 2023 05:56:40)
Офлайн
py.user.nextя это уже понял, понял что сценарий уже прописан. Но по коду (“походу”) этого не видно. Мы же код читаем, а не книжки, и как понять по коду, что любое действие с файлом - чтение, перезапись, дозапись - уже подразумевает полностью законченное действие?
Куда делся f.close()? Вот он как раз внутри with и находится
Прикреплённый файлы:
f.png (36,5 KБ)
Офлайн
py.user.nextну а что мы все делаем? предварительно “филология”, потом конкретика. Как говорил некто: “без общего не понять частного”.
Сначала делается полное словесное описание алгоритма
py.user.nextмне до самой смерти не понадобятся “эти” операции. Не начинайте даже.
И циркумфлекс - это операция XOR
Прикреплённый файлы:
Video_2023-05-13_164045.wmv (388,0 KБ)
Офлайн
py.user.nextэта ошибка переросла в нечто большее. Я прилагаю видео, там увидете, как перекрестие скриншотера отчасти выполняет роль клика мыши. Перелопатил кучу образцов кода с гитхаба, но только пара-тройка выполнялась корректно. Есть подозрение, что прежде, чем делать обрезку участка, делается клон экрана монитора. И уже по этому клону выполняются все операции. Но это не всегда явно, возможно, что тут дело обстоит проще, но только как.
Не исправляй, он пока работает. Ищи ошибку свою по сворачивания окна пока.
Офлайн