python交互式圖形編程實例(三)
更新時間:2017年11月17日 15:58:35 作者:hayden__wang
這篇文章主要為大家詳細(xì)介紹了python交互式圖形編程實例第三篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了python交互式圖形編程實例的第三部代碼,供大家參考,具體內(nèi)容如下
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#時鐘
from turtle import *
from datetime import *
def Skip(step):
penup()
forward(step)
pendown()
def mkHand(name, length):
#注冊Turtle形狀,建立表針Turtle
reset()
Skip(-length*0.1)
begin_poly() #開始記錄畫筆坐標(biāo)
forward(length*1.1) #畫筆向前移動length*1.1
end_poly() #結(jié)束記錄畫筆坐標(biāo)
handForm = get_poly() #記錄畫筆起始和結(jié)束坐標(biāo)位置(一個元組數(shù)據(jù))
register_shape(name, handForm) #注冊這個形狀
def Init():
global secHand, minHand, hurHand, printer
mode("logo")# 重置Turtle指向北
#建立三個表針Turtle并初始化
mkHand("secHand", 125)
mkHand("minHand", 130)
mkHand("hurHand", 90)
secHand = Turtle()
secHand.shape("secHand")
minHand = Turtle()
minHand.shape("minHand")
hurHand = Turtle()
hurHand.shape("hurHand")
for hand in secHand, minHand, hurHand:
hand.shapesize(1, 1, 3)
hand.speed(0)
#建立輸出文字Turtle
printer = Turtle()
printer.hideturtle() #隱藏畫筆
printer.penup()
def SetupClock(radius):
#建立表的外框
reset()
pensize(7) #畫筆大小
for i in range(60):
Skip(radius) #畫筆抬起,向前移動“radius”具體
if i % 5 == 0:
forward(20) #如果能被5整除,就向前移動20
Skip(-radius-20) #畫筆再回退到原位置
else:
dot(5) #畫一個5個像素的點
Skip(-radius) #畫筆再回退到原位置
right(6) #每次循環(huán)向右移動6個弧度
def Week(t):
week = ["星期一", "星期二", "星期三",
"星期四", "星期五", "星期六", "星期日"]
return week[t.weekday()] #返回當(dāng)前是星期幾
def Date(t):
y = t.year
m = t.month
d = t.day
return "%s %d %d" % (y, m, d) #返回當(dāng)前日期
def Tick():
#繪制表針的動態(tài)顯示
t = datetime.today()
second = t.second + t.microsecond*0.000001 #精確到微秒
minute = t.minute + second/60.0 #精確的秒
hour = t.hour + minute/60.0 #精確到分鐘
secHand.setheading(6*second) #秒針設(shè)定的角度 一圈360度,一圈60秒 360/60 = 6
minHand.setheading(6*minute) #分針設(shè)定的角度 一圈360度,一圈60分鐘 360/60 = 6
hurHand.setheading(30*hour) #時針設(shè)定的角度 一圈360度,一圈12小時 360/12 = 30
tracer(False) #取消動畫,字直接打在畫布上
printer.forward(65)
printer.write(Week(t), align="center",
font=("Courier", 14, "bold"))
printer.back(130)
printer.write(Date(t), align="center",
font=("Courier", 14, "bold"))
printer.home()
tracer(True) #開啟動畫
ontimer(Tick, 100)#100ms后繼續(xù)調(diào)用tick
def main():
tracer(False)
Init() #把表針畫出來
SetupClock(160) #把表盤畫出來
tracer(True)
Tick() #讓表針動起來,文字寫上去
mainloop()
if __name__ == "__main__":
main()
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#鍵盤值查詢
from tkinter import *
root=Tk()
#創(chuàng)建一個框架,在這個框架中響應(yīng)事件
frame=Frame(root,width=256,height=256)
def callBack(event):
print(event.keysym)
frame.bind("<KeyPress>",callBack)
frame.pack()
#當(dāng)前框架被選中,意思是鍵盤觸發(fā),只對這個框架有效
frame.focus_set()
mainloop()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python 之pandas庫的安裝及庫安裝方法小結(jié)
Pandas 是一種開源的、易于使用的數(shù)據(jù)結(jié)構(gòu)和Python編程語言的數(shù)據(jù)分析工具,它與 Scikit-learn 兩個模塊幾乎提供了數(shù)據(jù)科學(xué)家所需的全部工具,今天通過本文給大家介紹Python 之pandas庫的安裝及庫安裝方法小結(jié),感興趣的朋友跟隨小編一起看看吧2022-11-11
解決導(dǎo)入django_filters不成功問題No module named ''django_filter''
這篇文章主要介紹了解決導(dǎo)入django_filters不成功問題No module named 'django_filter',具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
解決Pycharm調(diào)用Turtle時 窗口一閃而過的問題
今天小編就為大家分享一篇解決Pycharm調(diào)用Turtle時 窗口一閃而過的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
python自動化測試三部曲之request+django實現(xiàn)接口測試
這篇文章主要介紹了python自動化測試三部曲之request+django實現(xiàn)接口測試,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Python接口測試結(jié)果集實現(xiàn)封裝比較
這篇文章主要介紹了Python接口測試結(jié)果集比較封裝,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05
Python筆記之a(chǎn) = [0]*x格式的含義及說明
這篇文章主要介紹了Python筆記之a(chǎn) = [0]*x格式的含義及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05

