Latest posts on DeWidgets - Qt5 виджеты на рабочий стол topichttp://python.su/forum/topic/34534/2018-02-20T14:42:08+02:00Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-02-20T14:42:08+02:00InterVi189829исправлено
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-02-20T10:29:38+02:00PEHDOM189827по крестику оно закроет окно, но не завершит основной цикл, нужно явно вызывать QApplication.quit()
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-02-20T09:48:29+02:00InterVi189826Есть пункт в контекстном меню и кнопка. И по крестику тоже. Благодарю, как всегда не дочитал документацию <img src="/static/djangobb_forum/img/smilies/yikes.png" />
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-02-19T23:43:20+02:00PEHDOM189815<blockquote><em>InterVi</em><br/>Не помню всех случаев, но если главное окно скрыто, приложение точно закроется при закрытии мессенджа.</blockquote>Там все просто как доска. <br/>1. когда ты закрываеш любое окно,генерируеться сигнал(или событие уже не помню точно) и главный обработчик событий проверяет остались ли открытые окна, если открытых окон нет то оно завершает основной цикл. <br/>2. В случае же если используеться hide(), то сигнал не генерируеться, но окно скрываеться(читай закрывается), но основной цикл продолжает работать, и когда закрываеться другое окно, то читай пункт 1<br/>соответвенно чтобы избежать завершения приложения при закрытии последнего окна нужно выполнить:<br/><div class="code"><pre> <span class="o">...</span>
<span class="n">app</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QApplication</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span>
<span class="n">app</span><span class="o">.</span><span class="n">setQuitOnLastWindowClosed</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
</pre></div>но соотвевенно нужно продумать комманду на завершение, по хоткею или пункту меню…
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-02-18T20:13:37+02:00InterVi189771За это время в проекте накопились довольно значительные изменения.<br/><ul><li> Много фиксов и рефакторинга. Работа с конфигом, локализацией, лок-файлом - были вынесены в отдельные модули.<br/></li><li> Таки появился декоратор try_except. Главной причиной послужило то, что сторонние разработчики виджетов вряд ли вообще будут ловить ошибки (а эксепшен в правильном месте валит питон с сегфолтом), пусть для них будет простой инструмент. Но я по-прежнему считаю это плохим подходом.<br/></li><li> Теперь используется модуль logging. Приложение стало выводить некоторую отладочную информацию (тоже по большей части для сторонних разработчиков), поэтому появилось надобность иметь возможность настраивать уровни логирования.<br/></li><li> Появились панельки для перетаскивания виджетов. Но они пока маленькие и убогие, над ними ещё надо работать, хотя бы с визуальной частью. Ещё хотелось бы научить их масштабированию, как в KDE.<br/></li></ul><br/>Ещё раз подумал над системой локализации. Удобство конфигов заключается в коротких ключах и в секциях, что делает возможным использование одинаковых ключей в разных местах. А ещё при добавлении сторонних виджетов в нужные конфиги записываются их секции с переводом, чтобы потом всё 1 раз грузилось из 1 файла. Хотя костыли всё равно потребуются, ибо вдруг у пользователя установлен язык, не поддерживаемый виджетом.<br/><br/>Использование другой системы локализации добавит костылей в код. Если брать gettext, то я скорее всего тоже использовал бы короткие ключи, что не есть хорошо. А писать тот же help, да ещё прямо в коде, тоже плохо. Насколько я понял, обычно используют родную систему Qt для перевода, даже QtDesigner генерирует свой говнокод с её использованием.<br/><br/>Пока подумываю оставить всё как есть. Потому что и так вполне удобно, нужно быть конченой макакой, чтобы не разобраться в соответствующем модуле и конфиге, если его потребуется перевести. Но может будут какие-нибудь конструктивные аргументы?<br/><br/>Вообще, хотелось бы больше мнений, проект близится к релизу.
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-01-15T21:47:31+02:00InterVi188691Я не оспаривал сами подходы или стандарты, я их применяю в других программах, когда это уместно. Почему всё именно так - описал выше довольно подробно. Внятных аргументов за всю тему так и не увидел. Не можешь аргументировать - значит просто навязываешь свои личные предпочтения, направленные на код ради кода, а не код ради приемлемого выполнения задач. Не хочу продолжать этот глупый диалог, он похож на троллинг.
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-01-15T18:43:13+02:00Rodegast188685Вот ты и сам понял что не готов воспринимать то что я тебе говорю. В этом нет ничего страшного, ты со временем сам поймёшь те вещи о которых я тебе говорил, ну если конечно выживешь.
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-01-15T15:16:59+02:00InterVi188676Пройдусь по тому, что было обработано. Что не упомянуто - то голословные придирки. Печально, что в теме больше критиканства, чем <strong>обоснованной критики</strong>, которая мне и нужна. В принципе, я уже доволен полученным результатом, некоторые конструктивные моменты оказались весьма полезными для развития проекта.<br/><br/><strong>использование Qt Designer</strong> <em>нет</em><br/>Видимо имелось ввиду предложение подгружать *.ui файлы. Это лишь повысит “жирность” проекта, так как всё равно в коде будет setText, setToolTip, ивенты и так далее, он не станет меньше. Если же использовать конвертер, то его код не очень хорош и его удобство сомнительно. Текущая структура кода значительно удобнее - там сразу всё понятно, комменты для быстрого поиска. А сам редактор часто бывает не нужен, потому что интерфейсы довольно просты и легко верстаются на слоях без подгонки.<br/><br/><strong>наследование от QDialog</strong> <em>нет</em><br/>Не ясно для чего это предлагалось. Окна справок - не диалоги.<br/><br/><strong>gettext вместо конфигов локали</strong> <em>нет</em><br/>Километровые строки прямо в коде, в два раза больше в файлах локализации, отдельный конфиг с некоторыми параметрами. Недостатки перевешивают преимущества. Особенно это касается строк со справкой - сомневаюсь, что и переводчики оценили бы фетиш на данный стандарт.<br/><br/><strong>использование системы локализации самого Qt</strong> <em>нет</em><br/>Нет, потому что она ведёт себя странно, на моей системе часто не работает. Хотя возможно я что-то делаю не так.<br/><br/><strong>активация / деактивация кнопок</strong> <em>да</em><br/>Это удобнее, чем сообщения в нижней строке. Небыло сделано изначально по причине лени.<br/><br/><strong>более удобное перетаскивание виджетов</strong> <em>возможно</em><br/>Режим редактирования и попиксельное выравнивание через специальное меню - действительно не лучшее решение. Возможно, в будущем появятся всплывающие боковые плашки, как в виджетах KDE.<br/><br/><strong>избавление от дублирования</strong> <em>частично</em><br/>Отрефакторил код и перешёл, теперь используются нужные конструкторы. От дублирования решил не избавлятся, так как была бы функция с кучей параметров и экономия строк получилась бы сомнительной, а вот удобство снизилось бы. Кроме диалоговых окон заметных проблем с дублированием обнаружено небыло.<br/><br/><strong>использование модуля logging</strong> <em>нет</em><br/>Потоки stdout и stderr перенаправляются в файлы, чтобы весь выхлоп не пропадал. Поэтому туда же летят все стактрейсы. Кроме крашей и сообщений о запуске / завершении больше ничего не выводится, решено было не тащить лишний модуль, создавая лишнюю нагрузку и лишний лог файл.<br/><br/><strong>декораторы для try-except</strong> <em>нет</em><br/>Идея хорошая, если бы не одно но - в некоторых местах при исключении происходит не только стак трейс. И количество таких мест иногда увеличивается. Декораторы усложнили бы процесс дописывания / переписывания кода, которое пока ещё часто случается. И усложнили бы сам код, для понимания которого пришлось бы распутывать более длинную цепочку, а так всё на виду. Ради экономии 2 строк кода - оно того не стоит, было решено не делать. Для API декораторы тоже сознательно не делались, потому что нет надобности обрабатывать события в нескольких местах, хватает обычного наследования.<br/><br/><strong>вынос информации о виджете</strong> <em>частично</em><br/>Информация была вынесена в отдельный класс, а главный класс не инициализируется и не хранится если виджет не установлен на рабочий стол. Это позволяет экономить ощутимо больше ресурсов, когда установлены не все виджеты. И это удобнее опции загрузки только установленных. Правда, есть не критичные накладки из-за такой архитектуры. Хранить эту информацию в модуле не стал, так как потребовался бы более длинный валидатор и всё равно бы пришлось запихивать данные в класс, который будет хранится в словаре, поэтому лучше так, чем шаманить.
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-01-15T14:18:21+02:00InterVi188675Проект ещё не перешёл в стадию тестирования. Ты специально превращаешь тему в бесполезный флуд? Твои сообщения нисколько не помогают мне хотя бы приблизительно понять проблему, одни голословные утверждения.
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-01-15T14:05:12+02:00Rodegast188673Возьми и позапускай его на разных DM. Это будет для тебя полезным.
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-01-15T01:51:20+02:00InterVi188658Ну что ты как юзверь, можешь нормально описать что именно не работает и при каких условиях?
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-01-14T22:37:12+02:00Rodegast188652Посмотрел тоже самое.<br/><br/>Короче вот моя оценка этого “проекта” по пятибалльной шкале:<br/><div class="code"><pre>Категория .............................................. поделка<br/>Юзабилити .................................................... 3<br/>Работоспособность ............................................ 3<br/>Качество кода ................................................ 2<br/>Упоротость автора ............................................ 4<br/>================================================================<br/>Диагноз ............................................... Не нужно</pre></div>
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-01-14T18:41:35+02:00InterVi188643Сейчас пофиксил много чего, что ночью проглядел. Изменения затронули очень много частей кода, где использовалось старое API. Экономия таки ощутимая, если только 1-2 виджета на столе, раньше больше ОЗУ выжиралось. Должно работать или по крайней мере сыпать ошибками.
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-01-14T16:41:28+02:00Rodegast188638Ошибок нет, но всё равно не работает.
Общий :: Python проекты :: DeWidgets - Qt5 виджеты на рабочий стол
2018-01-14T15:39:16+02:00InterVi188634Но ты же говоришь ошибки остались. Те же самые?