的拉深形狀的中心時,爲它繪製指定的兩個點的中間。目前,您的形狀的中間點(從75, 75
到500, 500
)是237.5,因此,如果您希望其中間位置成爲頁面的中間位置,並保留75, 75
座標,則必須使另一個爲525, 525
以完全反映第一。
至於繪製形狀,你需要在python中使用一些math
,所以我首先建議做一個圖像作爲時鐘的背景,以減少繪製對象。但是,如果您必須在沒有其他圖像的情況下執行此操作,則必須先導入數學庫。現在
import math
,對於數學原理:上半徑r
的圓的任何點可以被表示爲點(r*cosθ), (r*sinθ)
,其中θ
是從中心到該點的角度。這很重要的原因是,你希望鐘面上的每條線都指向圓的中心。要做到這一點,我們需要兩點來把這條線畫在中心點上,幸運的是對於我們來說,這意味着線上的兩個點都在不同的圓上(我們的圓和其中的一個),但是在相同的圓上從中心的角度。因爲我們想要12小時左右的圓點,以及每個(總共60個點)和圓周360度(每6度1點)之間的4分鐘點,我們需要一個循環,通過這一點。
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
,爲(在python需求弧度正弦和餘弦作爲數學)轉換成弧度:
radians = (angle/180) * math.pi
下關,分配座標變量,所以它更容易閱讀。
x_out = (radius_out * math.cos(radians)) + 300
y_out = (radius_out * math.sin(radians)) + 300
x_in = (radius_in * math.cos(radians)) + 300
y_in = (radius_in * math.sin(radians)) + 300
#the (+ 300) moves each point from a relative center of 0,0 to 300,300
最後,我們將它分配給一個列表,以便我們稍後可以訪問它,如果我們需要的話。確保在for循環之前定義此列表。
coords.append(w.create_line(x_out, y_out, x_in, y_in))
這應該給你你的時鐘線。
注意:由於tkinter分配x和y座標的方式,這將從3小時線順時針繪製回線。
希望這有幫助!如果有什麼不明白的地方,請在下面留言。