간단한 아날로그 시계
매우 이해하기 쉽습니다.
감사합니다.
실행된 환경
우분투 스튜디오 17.10
파이썬 3.6.3
파이썬에서 처음으로 처음부터 만든 프로그램입니다. (도 아마추어 프로그램입니다)
Python의 형식과 구문은 거의 모든 넷에서 조사하면서 코드를 작성했습니다. (해설책은 실려 있지 않은 경우가 많고, 찾는데 시간이 걸리지만 넷이라고 곧 발견됩니다.)
X 버튼으로 종료했을 때, 에러가 나오니까? 해결책을 모르고 try:, except:, pass를 넣고 있습니다.
clock.py
#!/usr/bin/python3
from tkinter import * #Window表示
from datetime import datetime #日時を取得
import time #sleepで0.1秒毎に表示を切り替える
import math #三角関数・円周率
WINwidth = 800 #時計の大きさ(min=200:変更箇所はここだけ)
WINcolor = '#ffffff' #BackGroundColor
WINheight = WINwidth #Windowの高さ
S_length = WINwidth / 2 * 0.75 #秒針長さ
M_length = S_length * 0.95 #分針長さ
H_length = S_length * 0.8 #時針長さ
H_LINEwidth = 8 #時針の太さ
M_LINEwidth = H_LINEwidth / 2 #分針の太さ
S_LINEwidth = 1 #秒針の太さ
#Windowを作成
Clock = Tk()
Clock.title("AnalogClock")
w = Canvas(Clock, width = WINwidth, height = WINheight, background = WINcolor)
w.pack()
w.create_oval(WINwidth / 2 - 5, WINheight / 2 - 5, WINwidth / 2 + 5, WINheight / 2 + 5, fill="black") #中心●
w.create_oval(5, 5, WINwidth-5, WINheight-5, width = 2) #時計の外形円
FontSize = int(WINwidth / 14) #時間文字のサイズ
Fx = 0 #時間文字の位置を修正
Fy = FontSize / 10
R = S_length + FontSize * 0.9 #時間文字位置の半径
A = 0 #時間文字位置の角度
for i in range(1,13): #文字盤表示
A = A + 30
Tx = R * math.cos(A / 180 * math.pi) #時間文字の座標
Ty = R * math.sin(A / 180 * math.pi)
w.create_text(WINwidth / 2 + Ty - Fx, WINheight / 2 - Tx + Fy, text = i, font = ("", FontSize))
try:
while True:
#ここから無限ループ
now = datetime.now() #現在の時間を取得
if now.hour > 12: #12時間表示
nowhour = now.hour - 12
else:
nowhour = now.hour
#秒針が動くと時分針も動かす
nowhour = nowhour + now.minute / 60 + now.second / 3600 #時間を時に変換:例.1時30分30秒ー>1.5083・・・
nowminute = now.minute + now.second / 60 #分秒を分に変換
H_A = nowhour / 12 * 360 * math.pi /180 #針の角度
M_A = nowminute / 60 * 360 * math.pi / 180
S_A = now.second / 60 * 360 * math.pi / 180
H_x = math.cos(H_A) * H_length #針の先端の座標計算(中心基準)
H_y = math.sin(H_A) * H_length
M_x = math.cos(M_A) * M_length
M_y = math.sin(M_A) * M_length
S_x = math.cos(S_A) * S_length
S_y = math.sin(S_A) * S_length
w.create_text(WINwidth / 2 , WINheight / 2 + WINwidth / 8, text = datetime.now().strftime('%Y/%m/%d %H:%M:%S'), font = ("", int(FontSize / 1.5)), tag="Y") #年月日時分秒
w.create_line(WINwidth / 2, WINheight / 2, WINwidth / 2 + H_y, WINheight / 2 - H_x, width = H_LINEwidth, tag="H") #時針
w.create_line(WINwidth / 2, WINheight / 2, WINwidth / 2 + M_y, WINheight / 2 - M_x, width = M_LINEwidth, tag="M") #分針
w.create_line(WINwidth / 2, WINheight / 2, WINwidth / 2 + S_y, WINheight / 2 - S_x, width = S_LINEwidth, tag="S") #秒針
w.update() #新しい針とカレンダーを表示
w.delete("H") #針とカレンダーを消去
w.delete("M")
w.delete("S")
w.delete("Y")
time.sleep(0.1) #0.1秒毎に描画
except:
pass
200픽셀
500픽셀
800픽셀
주로 참고한 HP
즐거움 Python/Tkinter 입문
h tp // w w. 게이오시치에 s. jp / m_ 히로이 / ぃght / pyt03. HTML
파이썬 현재 시간 획득
htps : // 이 m / mykysyk @ gi te b / ms / 15d7b2b1 a 988b8 29d4
Reference
이 문제에 관하여(간단한 아날로그 시계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ty21ky/items/c4e91fbb749ae2309f69텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)