안내: 출근 체크카드

5677 단어 showdevpython
나는 여전히 나의 첫 번째 진정한 소프트웨어 프로젝트를 기억한다.2011년으로 돌아가 Visual Basic으로 코드를 작성하는 법을 처음 배웠을 때.NET에서 나는 여러 작업에 걸린 시간을 추적하기 위해 작은 프로그램을 만들었다.
그것은 결코 가장 아름다운 인터페이스가 아니다. 나는 대화상자를 만드는 것을 너무 좋아하지만, 그것은 아주 잘 작동하고, 실제로는 큰 버그가 없다.나는 그것을 좋아한다!
하지만 시간은 천천히 지나갔다.NET 종속성이 만료되었습니다.나는 리눅스로 이사를 갔는데, 결국 기억이 나지 않는 상황에서 원본 코드와 공식 설치 프로그램을 잃어버렸다.
여러 해 동안 나는 내가 사랑하는 출근 체크카드처럼 간단하고 유창한 소프트웨어를 찾으려고 노력해 왔다.가장 가까운 것은 Project Hamster 개발자들이 이 프로젝트에 대한 흥미가 고갈되기 전에 나에게 효과가 상당히 좋았다.
마지막으로 이번 달에 나는 마침내 깨달았다. "헤이, 나는 이 활기찬 간단한 파이썬 책을 쓰고 있지만, 나는 아직 완전한 파이썬 응용 프로그램을 발표하지 않았다!"
그래서 나는 앉아서 Visual Studio 코드를 시작하고 일을 시작했다.

출근 체크카드 2.0 만들기


처음부터 시간 카드를 다시 쓰는 것은 프로그램을 다시 구상하는 것을 의미한다.나는 아무런 일도 하지 않았다. 화면 캡처도 없고, v1.0의 실행 복사본도 없고, 이전의 원본 코드도 없었다.
저는 Pyside2를 통해 Qt5를 깊이 연구하고 있습니다. 그래서 이것은 GUI에 대한 뚜렷한 선택입니다. 비록 주요한 결정 요소는 Qt5 응용 프로그램을 포장할 수 있다는 것을 알고 있습니다.2018년의 대부분 시간 동안 나는 포장을 누락하려고 시도했지만 키비와 그 의존성의 이상한 점 때문에 나는 여전히 익지게임을 발표하지 않았다.(나는 지금 Pyside2에서 이 게임을 다시 쓰고 있다.)

대화 상자 없음


초기부터 나는 더 이상 대화상자를 좋아하지 않았지만, 그것들은 여전히 이렇게 흔히 볼 수 있는 데스크톱 사용자 체험의 은유이다.나는 시간 로그 항목을 버리는 것과 같은 관건적인 동작을 확인하기 위해 하나 또는 두 개만 사용할 계획이다.
그러나 코드를 작성한 지 한 시간도 안 되어 나는 갑자기 QTBUG-56893 들어갔다.나는 버그가 복구될 때까지 이 프로젝트를 잠시 멈추는 것을 고려했지만, 나의 조급함은 결국 승리를 거두었다.
"대화 상자를 무엇으로 대체할 수 있습니까?"나 자신에게 묻는다.잠시 후, 나는 반응이 민감한 단일 창 인터페이스로 이 문제를 해결하기로 결정했다. 이것은 신선한 공기의 호흡이 될 것이다![정지] 또는 [재설정] 등 [무서운 버튼] 을 클릭하면 두 버튼이 매우 다른 방식으로 변경되어 사용자가 작업을 확인하거나 취소할 수 있도록 알립니다.
일단 내가 자체 적응 인터페이스를 결정하면 나의 나머지 디자인 결정은 곧 도착할 것이다.타이머와 컨트롤러는 응용 프로그램에서 가장 중요한 부분이기 때문에 맨 위에 유지됩니다.창의 나머지 부분은 패턴에 따라 변경되며 밑에 있는 네 개의 친선 단추를 사용합니다.설정으로 전환하면 인터페이스의 주요 부분이 변경되고 설정 단추가 로그로 변경되어 기본 보기의 시간 로그로 돌아갈 수 있습니다.

폴더


출근 체크카드는 설정과 시간 로그를 저장하기 위해 파일을 사용해야 한다.내 프로그램의 첫 번째 버전은 수동으로 내보내야 하는데, 이와 달리, 나는 새로운 시간카드가 변경 사항을 자동으로 파일에 저장할 수 있기를 바란다. 사용자는 아무것도 할 필요가 없다.
프로젝트의 이 부분은 실제로 나에게 많은 시간을 차지하지만, 그것도 마찬가지로 좋다. 왜냐하면 나는 파일 사용에 관한 매우 간단한Python 장절을 작성하고 있기 때문이다.

시스템 트레이


나의 주요 필수 기능 중 하나는 시스템 트레이 아이콘이다.나는 중요한 창을 닫는 싫은 습관이 하나 있다. 이것이 바로 대부분의 타이머 응용 프로그램이 나에게 적합하지 않은 이유이다.기본적으로 출근 카드 창을 닫으면 시스템 트레이에 숨겨야 합니다.종료는 인터페이스의 종료 버튼을 통해 완료되며 확인 메시지가 표시됩니다.(물론 트레이에 숨겨진 동작은 설정에서 변경할 수 있습니다.)

정태류


만약 이전에 인터페이스 코드를 작성한 적이 있다면, 대상은 복이 될 수도 있고 화가 될 수도 있다는 것을 알 수 있을 것이다.봉인은 작은 부품과 관련된 데이터와 특수한 기능이 통일되는 것을 확보하는 데 매우 도움이 된다.
다른 한편, 실례는?네.대부분의 경우, 시간은 작은 위젯을 표시하고, 그것을 사용하는 모든 것은 같은 실례에 접근해야 한다.이 문제를 처리하는 방법은 여러 가지가 있는데 대부분이 좋지 않다. 모든 물건의 전체적인 실례, 단례(please, no) 또는 작은 위젯 간의 통신을 처리하는 God류이다.네, 저는 이미 이상의 모든 것을 했습니다...어떤 것도 추천하지 않습니다.
Timecard에 대해 나는 어떤 대상이 한 번만 존재해야 하는지 정확하게 알고 있기 때문에 나는 그것들을 정적 클래스로 작성한다.@classmethod와 클래스 속성을 사용함으로써 저는 모든 잡기 실례의 미친 행동을 피할 수 있고 OOP가 제공하는 어떠한 봉인이나 명칭 공간의 장점도 피할 수 있습니다.
파이썬 개발자들이 본문을 읽고 스크린에서 소리를 지르고 있을지도 모르지만, 당신은 알고 있습니까?수업은 이 때문에 매우 잘 했다!
  • 규범이 깔끔하고 질서정연하며 직책이 명확하다.
  • 전체 변수가 없습니다.모든 내용에 이름 공간이 있습니다.
  • 도입문은 명백히 알 수 있다.
  • 예, 가독성!
  • 나는 코드로 돌아가서 버그를 복구해야만 했지만, 매번 몇 분만 걸려서 문제점을 찾아냈다.
    나는 코드를 더욱 재구성할 수 있는 기회가 있을 것이라고 확신하지만, 만약 내가 클래스를 사용하지 않았다면, 나는 악몽을 꾸었을 것이라고 생각하니, 나는 몸서리쳤다.

    만족 시간카드 2.0!


    나는 이 응용 프로그램이 매우 자랑스럽다. 나는 이미 그것을 나의 업무 절차의 일부분으로 삼았다.

    기록을 시작하려면 Start 을 클릭합니다.타이머 아래의 What are you doing? 텍스트 필드에서 현재 활동을 설명할 수 있습니다.Pause 버튼을 사용하여 현재 타이머를 일시 중지할 수 있습니다.
    타이머를 중지하고 저장하거나 재설정하려면 Resume 을 클릭하고 Stop 버튼이 되거나 Confirm Stop 를 클릭하여 중지를 취소할 수 있습니다.제어 버튼이 다시 ResumeReset 로 변경되어 시간을 버리거나 로그에 저장할 수 있습니다.
    시작 시간은 타임 스탬프로 사용되며, 활성 주석은 타이머 아래에 입력한 메시지에서 가져옵니다.

    창을 닫으면 숨기기만 하고 시간 카드는 시스템 트레이에서 실행됩니다.아이콘을 눌러 현재 타이머 지속 시간을 표시하고 일시 중지 및 복구를 허용합니다.오류를 방지하려면 주 창에서만 중지할 수 있습니다.
    타이머가 실행 중이거나 저장되지 않으면 Save 옵션이 비활성화되어 메뉴를 잘못 눌러서 의외로 시간을 낭비하지 않도록 합니다.

    보기를 설정하면 로그 파일의 저장 위치를 변경할 수 있습니다.업데이트하고 클릭 Quit 하면 새 파일이 바로 열리기 때문에 로그 파일 사이의 유지보수와 전환이 쉽습니다.(나는 앞으로 이 일을 더욱 쉽게 할 계획이다.)
    로그 보기에 표시된 타임 스탬프 형식도 수정할 수 있습니다. 해석상 파일 출력을 변경하지 않습니다.지속 시간을 10진 시간으로 표시할 수도 있습니다. 귀찮은 업무 시간 보고 프로그램에 시간을 입력해야 한다면 정말 편리합니다.(나는 항상 계산기를 끌어내서 10진 시간을 계산하는 것을 싫어한다. 누가 그렇게 생각하는가?)

    다운로드


    됐어, 그만해.너는 아마 이걸 쓰기 시작하고 싶을 거야, 그렇지 않아?
    현재 유일한 설치 방법은 PyPI에서 설치하는 것입니다. 비록 다른 형식으로 포장하고 있지만.그럼에도 불구하고, 만약 네 수중에 Save 가 있다면, 이것은 매우 쉽다.
    pip install --user timecard-app
    
    프로그램을 시작하려면 다음을 실행하십시오.
    timecard-app
    
    타임 카드에 대한 자세한 내용은 향후 계획을 위한 기능official pageGitHub 을 참조하십시오.피드백, 보고서 발표, 요청을 환영합니다.

    좋은 웹페이지 즐겨찾기