그려진 모양의 중심이 그릴 때 지정된 두 점의 중간이다. 현재 도형 중간 점 (75, 75
에서 500, 500
까지)은 237.5이므로 중간을 페이지 중앙에두고 싶고 75, 75
좌표를 유지하려면 다른 쪽을 만들어야합니다. 525, 525
첫 번째를 완전히 비추는 것.
모양을 그리는 데는 파이썬에서 math
이 필요합니다. 그래서 먼저 이미지를 시계의 배경으로 사용하여 적은 수의 객체를 그릴 것을 제안합니다. 그러나 다른 이미지없이이 작업을 수행해야하는 경우 먼저 수학 라이브러리를 가져와야합니다.
import math
이제, 수학 원칙 : r
반경의 원호상의 임의의 지점은 θ
이 점에 중심으로부터 각도 (r*cosθ), (r*sinθ)
점으로 나타낼 수있다. 이것이 중요한 이유는 시계면의 각 선이 원의 중심을 향하도록하기 위함입니다. 그렇게하기 위해서 우리는 그 중심에 선을 그리기 위해 두 점이 필요합니다. 그리고 다행히 우리에게 이것은 선의 두 점이 서로 다른 원 (우리 원과 그 안에있는 원)에 있지만 같은 위치에 있음을 의미합니다 중심으로부터의 각도.
우리는 서클 주위에 12 시간 지점과 각 지점 사이에 4 분의 지점 (총 60 포인트)과 원으로 360도 (6도마다 1 포인트)가 필요하기 때문에 for 루프는 그것을 통과합니다. (에 추가 할 분 포인트) 내부 원에 대해, 하나를 (에서 시작하는 점에 대한) 외부 원의 반경 하나, 그리고 하나 :
for angle in range(0, 360, 6):
그리고 우리는 3 개 상수를 할 것입니다 더 많은 내부 순환계 (시간 지점이 끝나는 지점). 우리는 또한 내부 반경을 매 30도마다 선택하기를 원할 것입니다 (5 점마다 나타나고 그 사이에 6 도가 있기 때문에).
radius_out = 225
radius_in = 0 #temporary value
if (angle % 30) == 0: #the % symbol checks for remainder
radius_in = 210
else:
radius_in = 220
이제 (파이썬 요구의 죄를 라디안 및 CoS에서 수학으로) 라디안으로 변환 :
radians = (angle/180) * math.pi
다음으로 떨어져, 그것은 쉽게 읽을 수 그래서 변수에 좌표를 할당.
마지막으로 필요하면 나중에 액세스 할 수 있도록 목록에 지정합니다. 이 목록을 for 루프 외부에서 먼저 정의해야합니다.
coords.append(w.create_line(x_out, y_out, x_in, y_in))
이것은 시계 라인을 제공합니다.
참고 : tkinter가 x 좌표와 y 좌표를 지정하는 방식으로 인해 시계 방향으로 3 줄의 선이 다시 그려집니다.
희망이있었습니다. 당신이 이해할 수없는 것이 있다면, 아래에 주석으로 적어주십시오.