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() #開始記錄畫筆坐標
forward(length*1.1) #畫筆向前移動length*1.1
end_poly() #結(jié)束記錄畫筆坐標
handForm = get_poly() #記錄畫筆起始和結(jié)束坐標位置(一個元組數(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()] #返回當前是星期幾
def Date(t):
y = t.year
m = t.month
d = t.day
return "%s %d %d" % (y, m, d) #返回當前日期
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()
#當前框架被選中,意思是鍵盤觸發(fā),只對這個框架有效
frame.focus_set()
mainloop()
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python3讀取和寫入excel表格數(shù)據(jù)的示例代碼
這篇文章主要介紹了Python3讀取和寫入excel表格數(shù)據(jù)的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
Python中將文件從一個服務(wù)器復(fù)制到另一個服務(wù)器的4種方法
Python中將文件從一個服務(wù)器復(fù)制到另一個服務(wù)器通常涉及到網(wǎng)絡(luò)傳輸,這個過程可以通過多種方式實現(xiàn),本文主要為大家介紹了4種常用方法,需要的可以參考下2024-10-10
Python Requests.post()請求失敗時的retry設(shè)置方式
這篇文章主要介紹了Python Requests.post()請求失敗時的retry設(shè)置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Python calendar日歷模塊的應(yīng)用案例演示
calendar模塊是python用來處理日歷的模塊,通過不同的api和格式輸出多種形式的日歷格式,下面就通過不同的api和參數(shù)來輸出和學習calendar模塊的用法2023-06-06
基于Python實現(xiàn)經(jīng)典植物大戰(zhàn)僵尸游戲
這篇文章主要介紹了如何利用Python實現(xiàn)植物大戰(zhàn)僵尸游戲,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下2022-05-05
Python實現(xiàn)動態(tài)生成系統(tǒng)數(shù)據(jù)庫設(shè)計到Word文檔
這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)填寫相關(guān)數(shù)據(jù)庫信息后,生成系統(tǒng)數(shù)據(jù)庫設(shè)計到word文檔,文中示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-06-06
scikit-learn處理缺失數(shù)據(jù)的方法與實踐
scikit-learn作為Python中廣泛使用的機器學習庫,提供了多種工具和技術(shù)來幫助我們處理缺失數(shù)據(jù),本文將詳細介紹sklearn處理缺失數(shù)據(jù)的方法,并提供實際的代碼示例,需要的朋友可以參考下2024-06-06

