python tkinter 기반 퇴근 카운트다운 도구 만 들 기
인터넷 에 서 는 996 출근 제 라 고 자주 말 하지만 965 도 적지 않 습 니 다.007 도 있 고 007 도 약간 ICU 느낌 이 듭 니 다.그래서 모두 바 쁜 와 중 에 틈 을 내 고 가끔 물고 기 를 만 지 며 물고 기 를 만 지 는 방식 이 다양 합 니 다.당신 은 출근 해서 물고 기 를 만 져 본 적 이 있 습 니까?당신 은 물고 기 를 만 지 는 시간 에 무엇 을 했 습 니까?만약 당신 이 일찍 그날 의 임 무 를 완수 했다 면,앉 아서 퇴근 을 기다 리 는 느낌 이 매우 상쾌 하지 않 습 니까?나 는 이 시간 이 여전히 견 디 기 어렵다 고 말 하고 싶 은 데,차라리 일 을 좀 빨리 하 는 것 이 낫 겠 다.그럼 무엇 을 할 까?퇴근 카운트다운 써 주세요.이렇게 즐 거 운 결정...
사고의 방향 을 실현 하 다.
카운트다운 시간 새로 고침 은 반드시 그래 픽 인터페이스 가 필요 합 니 다.즉,GUI 프로 그래 밍 이 필요 합 니 다.여 기 는 tkinter 를 사용 하여 로 컬 창의 인터페이스 를 실현 합 니 다.tkinter 를 사용 하면 페이지 레이아웃 과 시간의 정시 새로 고침 디 스 플레이 를 실현 할 수 있 습 니 다.시간 과 관련 된 작업 은 time 모듈 을 사용 해 야 합 니 다.여기 서 저 는 카운트다운 이 자동 으로 꺼 지 는 기능 도 추 가 했 습 니 다.
운행 환경
Python 실행 환경:Windows+python 3.8
사용 하 는 모듈:tkinter,time,os
설치 되 지 않 은 모듈 은 pip intatll xxxxx 를 사용 하여 설치 하 십시오.예 를 들 어 pip install tkinter
인터페이스 레이아웃
일단 이 루어 진 화면 을 볼 게 요.
캡 처 에서 볼 수 있 듯 이 주로 세 가지 정보 가 있 습 니 다.
현재 시간:이것 은 현재 시간 을 실시 간 으로 표시 합 니 다.형식 은 포맷 된 년 월 일 시 분 초 입 니 다퇴근 시간:이것 은 수정 할 수 있 습 니 다.기본 값 은 18:00:00 입 니 다.자신의 퇴근 시간 에 따라 수정 할 수 있 습 니 다남 은 시간:여 기 는 초읽기 남 은 시간 입 니 다.START 를 누 른 후 1 초 마다 갱 신 됩 니 다
#
tk_obj = Tk()
tk_obj.geometry('400x280')
tk_obj.resizable(0, 0)
tk_obj.config(bg='white')
tk_obj.title(' ')
Label(tk_obj, text=' ', font=' 20 bold', bg='white').pack()
#
Label(tk_obj, font=' 15 bold', text=' :', bg='white').place(x=50, y=60)
curr_time = Label(tk_obj, font=' 15', text='', fg='gray25', bg='white')
curr_time.place(x=160, y=60)
refresh_current_time()
#
Label(tk_obj, font=' 15 bold', text=' :', bg='white').place(x=50, y=110)
# -
work_hour = StringVar()
Entry(tk_obj, textvariable=work_hour, width=2, font=' 12').place(x=160, y=115)
work_hour.set('18')
# -
work_minute = StringVar()
Entry(tk_obj, textvariable=work_minute, width=2, font=' 12').place(x=185, y=115)
work_minute.set('00')
# -
work_second = StringVar()
Entry(tk_obj, textvariable=work_second, width=2, font=' 12').place(x=210, y=115)
work_second.set('00')
#
Label(tk_obj, font=' 15 bold', text=' :', bg='white').place(x=50, y=160)
down_label = Label(tk_obj, font=' 23', text='', fg='gray25', bg='white')
down_label.place(x=160, y=155)
down_label.config(text='00 00 00 ')
#
Button(tk_obj, text='START', bd='5', command=refresh_down_time, bg='green', font=' 10 bold').place(x=150, y=220)
tk_obj.mainloop()
남 은 시간 을 정시 갱신설 정 된 퇴근 시간 을 가 져 와 현재 시간의 차 이 를 비교 하여 남 은 시간 을 얻 고 while 로 1 초 에 남 은 시간 을 순환 처리 하 며 실시 간 으로 화면 에 새로 고침 해 야 남 은 시간 이 0 프로그램 이 끝 날 때 까지 컴퓨터 가 자동 으로 꺼 지 는 기능 도 작 동 합 니 다.
def refresh_down_time():
""" """
#
now_time = int(time.time())
#
work_hour_val = int(work_hour.get())
if work_hour_val > 23:
down_label.config(text=' (00-23)')
return
work_minute_val = int(work_minute.get())
if work_minute_val > 59:
down_label.config(text=' (00-59)')
return
work_second_val = int(work_second.get())
if work_second_val > 59:
down_label.config(text=' (00-59)')
return
#
work_date = str(work_hour_val) + ':' + str(work_minute_val) + ':' + str(work_second_val)
work_str_time = time.strftime('%Y-%m-%d ') + work_date
time_array = time.strptime(work_str_time, "%Y-%m-%d %H:%M:%S")
work_time = time.mktime(time_array)
if now_time > work_time:
down_label.config(text=' ')
return
#
diff_time = int(work_time - now_time)
while diff_time > -1:
# -
down_minute = diff_time // 60
down_second = diff_time % 60
down_hour = 0
if down_minute > 60:
down_hour = down_minute // 60
down_minute = down_minute % 60
#
down_time = str(down_hour).zfill(2) + ' ' + str(down_minute).zfill(2) + ' ' + str(down_second).zfill(2) + ' '
down_label.config(text=down_time)
tk_obj.update()
time.sleep(1)
if diff_time == 0:
#
down_label.config(text=' ')
# , ,
# down_label.config(text=' ')
# os.system('shutdown -s -f -t 60')
break
diff_time -= 1
전체 코드여러분 들 이 물고 기 를 테스트 하고 순조롭게 만 지 는 것 을 편리 하 게 하기 위해 저 는 완전한 카운트다운 프로그램 도 붙 였 습 니 다.여러분 들 이 무슨 문제 가 있 으 면 신속하게 피드백 할 수 있 습 니 다.더 많은 것 을 알 고 싶 으 면 친구 사 이 트 를 방문 하 세 요github.com/gxcuizy위 에서 저 를 찾 으 세 요.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
author: gxcuizy
date: 2021-04-27
"""
from tkinter import *
import time
import os
def refresh_current_time():
""" """
clock_time = time.strftime('%Y-%m-%d %H:%M:%S')
curr_time.config(text=clock_time)
curr_time.after(1000, refresh_current_time)
def refresh_down_time():
""" """
#
now_time = int(time.time())
#
work_hour_val = int(work_hour.get())
if work_hour_val > 23:
down_label.config(text=' (00-23)')
return
work_minute_val = int(work_minute.get())
if work_minute_val > 59:
down_label.config(text=' (00-59)')
return
work_second_val = int(work_second.get())
if work_second_val > 59:
down_label.config(text=' (00-59)')
return
#
work_date = str(work_hour_val) + ':' + str(work_minute_val) + ':' + str(work_second_val)
work_str_time = time.strftime('%Y-%m-%d ') + work_date
time_array = time.strptime(work_str_time, "%Y-%m-%d %H:%M:%S")
work_time = time.mktime(time_array)
if now_time > work_time:
down_label.config(text=' ')
return
#
diff_time = int(work_time - now_time)
while diff_time > -1:
# -
down_minute = diff_time // 60
down_second = diff_time % 60
down_hour = 0
if down_minute > 60:
down_hour = down_minute // 60
down_minute = down_minute % 60
#
down_time = str(down_hour).zfill(2) + ' ' + str(down_minute).zfill(2) + ' ' + str(down_second).zfill(2) + ' '
down_label.config(text=down_time)
tk_obj.update()
time.sleep(1)
if diff_time == 0:
#
down_label.config(text=' ')
# , ,
# down_label.config(text=' ')
# os.system('shutdown -s -f -t 60')
break
diff_time -= 1
#
if __name__ == "__main__":
#
tk_obj = Tk()
tk_obj.geometry('400x280')
tk_obj.resizable(0, 0)
tk_obj.config(bg='white')
tk_obj.title(' ')
Label(tk_obj, text=' ', font=' 20 bold', bg='white').pack()
#
Label(tk_obj, font=' 15 bold', text=' :', bg='white').place(x=50, y=60)
curr_time = Label(tk_obj, font=' 15', text='', fg='gray25', bg='white')
curr_time.place(x=160, y=60)
refresh_current_time()
#
Label(tk_obj, font=' 15 bold', text=' :', bg='white').place(x=50, y=110)
# -
work_hour = StringVar()
Entry(tk_obj, textvariable=work_hour, width=2, font=' 12').place(x=160, y=115)
work_hour.set('18')
# -
work_minute = StringVar()
Entry(tk_obj, textvariable=work_minute, width=2, font=' 12').place(x=185, y=115)
work_minute.set('00')
# -
work_second = StringVar()
Entry(tk_obj, textvariable=work_second, width=2, font=' 12').place(x=210, y=115)
work_second.set('00')
#
Label(tk_obj, font=' 15 bold', text=' :', bg='white').place(x=50, y=160)
down_label = Label(tk_obj, font=' 23', text='', fg='gray25', bg='white')
down_label.place(x=160, y=155)
down_label.config(text='00 00 00 ')
#
Button(tk_obj, text='START', bd='5', command=refresh_down_time, bg='green', font=' 10 bold').place(x=150, y=220)
tk_obj.mainloop()
이상 은 python 이 tkinter 를 바탕 으로 퇴근 카운트다운 도 구 를 만 드 는 상세 한 내용 입 니 다.python 카운트다운 도구 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.