Рубрики
Без рубрики

Представляем: Timecard

Я приношу свой первый кодирующий проект обратно в жизнь. Отслеживание времени просто было намного проще! Теги с Showdev, Python.

Я до сих пор помню свой первый реальный программный проект. Вернувшись в 2011 году, когда я впервые узнал, как кодировать в Visual Basic .NET, я создал небольшое приложение для отслеживания того, сколько времени я потратил на различные задачи.

Это был не самый красивый интерфейс – я наслаждался слишком сильно, чтобы создавать диалоговые окна LIIIIIITLE – но он работал хорошо, и на самом деле не было серьезных ошибок. Я люблю это!

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

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

Наконец, в этом месяце я пришел к реализации: «Эй, я пишу этот Мертвый простой Python Книга, и все же мне еще предстоит выпустить полноценное приложение в Python! »

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

Перезаписи таймарда с нуля означала буквально переоборудование программы. Мне нечего было работать от: Нет скриншотов, без запускной копии V1.0, нет предыдущего исходного кода.

Я становился довольно глубоко в QT 5 через pyside2, так что это был мой очевидный выбор для GUI, хотя основным реченным фактором было то, что Я знал, что можно упаковать Qt 5 приложений. Я провел лучшую часть 2018 года, пытаясь и не удалось упаковать бездействие, мою еще неразрешенную головоломку, благодаря какой-то стране с кивами и ее зависимостями. (Я сейчас переписываю эту игру в Pyside2.)

Нет диалогов

С тех первых дней я выпал из любви с диалоговыми окнами, но они все еще такие обычные настольные UX Metaphor! Я планировал использовать только один или два для подтверждения критических действий, таких как выброс ввода журнала времени.

Но меньше часа в кодировку, я хлопаю в Qtbug-56893 Отказ Я кратко рассмотрел, что удерживая проект, пока ошибка не была исправлена, но мое нетерпение победило.

«Что я могу использовать вместо диалогового окна? «Я спросил себя. Через мгновение я решил, что ответственный интерфейс однокана решит проблему, и был бы дыханием свежего воздуха! Нажав на «пугающий кнопку», как «Стоп» или «Сброс», приведет к тому, что две кнопки для Изменить Очень явно побуждаю пользователю подтвердить или отменить действие.

Однажды я решил на адаптивный интерфейс, остальные решения моих дизайнерских решений вступили в действие довольно быстро. Таймер и его контроль были наиболее важной частью приложения, поэтому они останутся на вершине. Остальная часть окна будет изменяться в зависимости от режима, используя четыре дружественных кнопки вдоль дна. Переключение на «Настройки» изменит основную часть интерфейса, а кнопка «Настройки» изменится на «Журнал», чтобы разрешить возвращение в журнал времени, который был представлением по умолчанию.

Файлы

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

Эта часть проекта на самом деле взяла большой кусок моего времени, но это так же хорошо, так как я в середине написания статьи и а Мертвый простой Python Глава Все о работе с файлами!

Системный лоток

Одной из моих главных «Должно быть, есть» функции были значок системного лотка. У меня есть противная привычка закрывать важные окна, поэтому большинство применений таймера делают не Работа для меня! Закрытие окна Timecard должен, по умолчанию, скрыть его в системном лотке. Выход будет проведен через кнопку «Quit» в интерфейсе, что бы быстро подтвердило подтверждение. (Конечно, это поведение Hide-To-Tray может быть изменено в настройках.)

Статические классы

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

Экземпляры, с другой стороны? Фу. Большую часть времени у вас только когда-либо ?| один Экземпляр, скажем, виджет отображения времени, и все, что работает с ним, необходимо получить доступ к тому же экземпляру. Есть различные способы обращения с этим, большинство из них плохое: глобальные экземпляры все , Singletons (пожалуйста, нет) или класс бога, чтобы обрабатывать связь между виджетами. И да, я сделал все вышеперечисленное … и не рекомендую никто из них.

Для TameCard я знал именно, какие предметы должны существовать только один раз, поэтому я написал те, как Статические классы Отказ Используя @classmethod А атрибуты классов, я смог обойти все безумие экземпляров жонглирования, не вытесняя любое из инкапсуляции или пространства имен, которое обеспечивает OOP.

Я знаю, что некоторые разработчики Python, вероятно, читают это и кричат на свои экраны, но вы знаете, что? Классы работали очень хорошо для этого!

  • Кодекс является чистым и хорошо организованным, с четко определенными обязанностями.
  • Нет глобальных переменных. Все имен пространственно.
  • Импортные заявления очевидны.
  • Дай читабельность!

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

Я уверен, что есть несколько возможностей для рефакторов кода дальше, но я дрожал, чтобы подумать о кошмаре, которому я бы имел, если бы я не использовал классы.

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

Чтобы начать ведение журнала, вы просто нажмите Начинать . Вы можете описать вашу текущую активность в Что ты делаешь? Текстовое поле чуть ниже таймера. Текущий таймер может быть приостановлен с Пауза и эта кнопка становится Резюме кнопка.

Чтобы остановить таймер и сохранить или сбросить его, вы нажимаете Стоп , который тогда становится Подтвердить остановку Кнопка (или еще, вы можете нажать Резюме отменить остановку.) Кнопки управления снова меняются в Сброс и Сохранить Ибо забрать ваше время или сохранение его в журнал.

Время, которое вы начали, используется в качестве временной техники, а примечание активности принимается из этого сообщения, который вы набрали ниже таймера.

Закрытие окна только скрывает его, и таймарда остается запусками в системной лоток. Нажатие на значок показывает текущую длительность таймера и позволяет вам приостановить и возобновить. (Остановка может быть сделана только из главного окна, чтобы предотвратить ошибки.)

Выйти Опция отключается до тех пор, пока таймер работает или несохранен, чтобы убедиться, что вы случайно не выбросите свое время с ошибкой в меню.

Просмотр настроек позволяет изменить, где сохраняются файлы журнала. Обновление этого и нажав Сохранить Немедленно открою новый файл, поэтому его легко поддерживать и переключаться между файлами журналов. (У меня есть планы сделать это даже легче позже.)

Вы также можете изменить формат Timestamp, как он отображается в представлении журнала, хотя это не изменяет вывод файла для анализа причин. Вы также можете показать продолжительность в десятичных часах, что действительно удобно, если вам нужно ввести свое время в одну из тех приложений о том, чтобы наногими приложениями для работы. (Я ненавижу всегда тянуть калькулятор, чтобы выяснить десятичные часы. Кто думает в этом?)

Скачать

Хорошо, достаточно этого. Вы, вероятно, хотите начать использовать это, не так ли?

В настоящее время единственным способом установки является из PYPI, хотя я работаю над упаковкой в других форматах. Тем не менее, если у вас есть Пип Удобный, это супер легко!

pip install --user timecard-app

Чтобы запустить программу, просто запустите:

timecard-app

Для получения дополнительной информации о Timecard, включая функции, которые я запланировал на будущее, проверить Официальная страница и Гадость . Я приветствую отзывы, отчеты о выпуске и вытягивании запросов.

Оригинал: “https://dev.to/codemouse92/introducing-timecard-2e2d”