当前位置:文档之家› Python交互式程序设计导论第三周作业仅供参考

Python交互式程序设计导论第三周作业仅供参考


# "时钟"游戏小项目程序模板

import simpleguitk as gui
import math
from datetime import datetime

# 定义全局变量
hour_radian = 0.0 #时针角度
minute_radian = 0 #分针角度
second_radian = 0.0 #秒针角度
digit_date = '' #日期
digit_time = '' #时间
display_digit=False #是否数显
success =False #是否点击关闭音乐成功
tenth_second = 0 #十分之秒
play_music = False #播放音乐
interval = 100 #时间事件处理触发的周期0.1秒

# 加载图像资源
clock_face = gui.load_image('https://www.doczj.com/doc/1914929797.html,/ProjectResource/images/project3/ClockFace.jpg')
hour = gui.load_image("https://www.doczj.com/doc/1914929797.html,/ProjectResource/images/project3//Hour.png")
minute = gui.load_image("https://www.doczj.com/doc/1914929797.html,/ProjectResource/images/project3/Minute.png")
second = gui.load_image("https://www.doczj.com/doc/1914929797.html,/ProjectResource/images/project3//Second.png")
#加载并设置音乐资源
music_box = gui.load_sound("https://www.doczj.com/doc/1914929797.html,/ProjectResource/sounds/project3/music_box.ogg")
music_box.set_volume(0.5)


def get_time():
"""定义获取日期时间的辅助函数,获取日期时间"""
global hour_radian,minute_radian,second_radian,digit_date,digit_time,tenth_second
dt = datetime.now()
tenth_second = dt.microsecond//100000
digit_date = (dt.year,'年',dt.month,'月',dt.day,'日')
digit_time = (dt.hour,'时',dt.minute,'分',dt.second,'秒',tenth_second)
hour_radian = math.pi* (dt.hour-12)/6 + (math.pi*dt.minute/360)
minute_radian = math.pi * dt.minute / 30
second_radian = math.pi * dt.second/30


#
def toggle_display_digit():
"""定义按钮“开启数显”的事件处理函数,切换数显"""
global display_digit,digit_date
if display_digit ==False:
display_digit= True
button1.set_text('关闭数显')
else:
display_digit = False
button1.set_text('开启数显')

def toggle_music_play():
"""定义按钮“播放音乐”的事件处理函数,切换音乐播放"""
global play_music,success
if not play_music:
play_music = True
success = False
button2.set_text('关闭音乐')
music_box.rewind()
music_box.play()
elif tenth_second == 0 :
success = True
play_music = False
button2.set_text('播放音乐')
music_box.pause()



def tick():
"""定义时钟事件的处理函数(每0.1秒被系统调用1次)"""
if success == False:
get_time()



def draw(canvas):
"""定义绘制屏幕的处理函数"""
canvas.draw_image(clock_face,[300,300],[600,600],[300,300],[600,600])
if display_digit == True:
canvas.draw_text(digit_date,[180,200],20,'black')
canvas.draw_text(digit_time,[180,400],20,'black')
canvas.draw_image(hour,[8,300],[16,600],[300,300],[16,600],hour_radia

n)
canvas.draw_image(minute,[6,300],[12,600],[300,300],[12,600],minute_radian)
canvas.draw_image(second,[15,300],[30,600],[300,300],[30,600],second_radian)


# 创建窗口
frame = gui.create_frame('神器时钟',600,600)
watch = gui.create_timer(interval,tick)

# 注册事件处理器
frame.set_draw_handler(draw)
button1 = frame.add_button('开启数显',toggle_display_digit,100)
button2 = frame.add_button('播放音乐',toggle_music_play,100)


# 启动时钟
watch.start()
# 调用获取日期时间函数
get_time()

# 启动窗口
frame.start()

相关主题
文本预览
相关文档 最新文档