python+tkinter制作一个可自定义的动态时钟及详细解释,珍藏版

1.效果图

2.完整代码

#第1步:导出模块
from tkinter import *
import math,time
#第2步:定义窗口的相关设置
root = Tk()
root.title("a DIY clock") #定义窗口名称
root.geometry("1020x800+500+0") #位置坐标=500,0=就是顶格向右水平移动500
root.configure(bg=‘pink‘) #定义窗口的背景颜色
#第3步:定义全局变量
global List #定义全局变量,list列表
global i   #定义i
List = [] #定义了一个初始化空的list

#第4步:定义一个画布canvas,大小、背景颜色
canvas = Canvas(root,width=400, height=500,bg=‘green‘)
canvas.pack() #居中顶上线pack的特点
#生成外圆,圆内填充颜色是fill设置
canvas.create_oval(50, 50, 350, 350,fill=‘orange‘)
#生成外圆,可以引申复习一下:canvas的画图形学习,画圆、长方形、正方形、椭圆形

#附加:如果在root的tk窗口上还有其他的东西,建议放在这里设置
#如果放在while循环后面,因为一旦进入while循环时,就不能停止,除非停止才进行下一步,才显示。
#而显示动态的时间是一个死循环,故建议放在while循环前进行设置
#设置字体最大20,与label的属性有关
label=Label(root,text=‘新年快乐‘,width=10,height=1,font=20,fg=‘red‘)
label.pack() #label位置的方法一
#label.place(x=400,y=501) #canvas的height=500,还是pack好,窗口大小改变,依旧居中顶在画画布下

#第5步:定义时针上的刻度1~12h
def points():
    for i in range(1,13): #定义时针刻度(1~12h)
        x = 200 + 130*math.sin(2*math.pi*i/12)
        y = 200 - 130*math.cos(2*math.pi*i/12)
        #时针上的小时刻度的显示,位置,字体大小,注意字体颜色是用fill,不是color或者fg或bg
        canvas.create_text(x,y,text=i,font=10,fill=‘red‘)
points() #生成数字

#第6步:定义指针=时针、分针、秒针
def createline(radius,line_width,rad):
    x = 200 + radius * math.sin(rad)
    y = 200 - radius * math.cos(rad)
    #指针的设置,包括时针、分针、秒针,及颜色fill相当于指针的颜色设置
    i = canvas.create_line(200, 200, x, y, width=line_width,fill=‘blue‘)
    List.append(i) #列表末尾添加i

#第7步:
#注意时钟是一直循环的,while循环等于1相当于true,一直循环的
#如果不加try和except TclError:pass,那么关闭tk窗口的右上角的’x‘,强制中断,跳出循环,就会报错
try:
#定义循环
    while True:
        tm=time.localtime() #获取当前时间
        #cur_time2 = time.strftime(‘%Y-%m-%d %X‘, time.localtime())
        #加上文字:当前时间,注意换行符号:\n
        cur_time2 = time.strftime(‘当前时间:\n‘+‘%Y-%m-%d %X‘, time.localtime())
        t_hour=0
        if tm.tm_hour<=12:
            t_hour=tm.tm_hour
        else:
            t_hour=tm.tm_hour-12
        #定义指针大小
        rad1=2*math.pi*(t_hour+tm.tm_min/60)/12 #时针
        rad2=2*math.pi*(tm.tm_min+tm.tm_sec/60)/60 #分针
        rad3=2*math.pi*tm.tm_sec/60 #秒针
        #画指针
        createline(50,6,rad1) #时针
        createline(90,3,rad2) #分针
        createline(120,1,rad3) #秒针

        #当前时间显示地址、文字显示、字体大小、fill相当于字体颜色设置
        time_text=canvas.create_text(200,450,text=cur_time2,font=10,fill=‘purple‘)
        root.update() #窗口刷新或更新,因当前时间是一秒一秒跳动的,否则不动了
        time.sleep(1) #暂停1秒,代表秒针是1秒1秒的走动这个循环
        #循环走动一次,及时删除画布上的相关数据,否则有残影
        for j in List:
        #备注这里的i与上面的i不同,是局部变量,也可以设置item或者j
            canvas.delete(j)
        canvas.delete(time_text)
except TclError: #如果出现错误,就是强制跳出死循环,那么pass=忽略跳出
    pass

#循环走起
root.mainloop()

原文地址:https://www.cnblogs.com/ysysbky/p/12253596.html

时间: 2024-10-08 01:28:55

python+tkinter制作一个可自定义的动态时钟及详细解释,珍藏版的相关文章

python+pygame制作一个可自定义的动态时钟和详解

1.效果图 2.完整代码 #第1步:导出模块 import sys, random, math, pygame from pygame.locals import * from datetime import datetime, date, time #第2步:初始化和窗扣大小的设置 pygame.init() #这一步必须放在模块之后,对pygame很重要 #screen = pygame.display.set_mode((800, 600)) #定义窗口大小 screen = pygame

python -Tkinter 实现一个小计算器功能

文章来源:http://www.cnblogs.com/Skyyj/p/6618739.html 本代码是基于python 2.7的 如果是对于python3.X  则需要将 tkinter 改为Tkinter    将tkMessagebox 改为messagebox即可 #-*- coding:utf-8 -*- from tkinter import * import tkMessageBox def get_Tk(): top = Tk() return top #定义求总和函数 def

利用python+tkinter开发一个点名软件

最近上课学生多名字记不住,名册忘记了带,要点名怎么办,好久没有写代码了,于是自己写了个点名软件,记录下吧,第一次接触TK也不是太熟悉,写的不太好,记录下源代码 以后遇到要写桌面软件还是可以耍耍的. tk:文档  https://wiki.python.org/moin/TkInter tk是python 自带的一个GUI模块 效果: 背景图: icon图标: 源码: from win32com.client import Dispatch from tkinter import * import

利用python+tkinter做一个简单的智能电视遥控器

要通过python实现遥控器功能分两步: 第一步:开发图形化界面 第二步:使PC端给电视发送相应指令 现在就开始第一步操作实现遥控器功能,python2输入以下代码 注意:python3需要将代码中的from Tkinter import * 替换为from tkinter import * 将from SimpleDialog import * 替换为import tkinter.simpledialog #coding=utf-8from Tkinter import * from Simp

使用Python3的tkinter制作一个简单的计算器界面

1 #!/usr/bin/python3 2 #-*-coding:utf-8-*- 3 import tkinter 4 import tkinter.font 5 6 class Calculate(): 7 def __init__(self): 8 self.tk=tkinter.Tk(); 9 self.tk.title("Calculate"); 10 11 self.tk.resizable(0,0); 12 self.showfont=tkinter.font.Font

【求教 探讨】python tkinter的messagebox

最近有一个要求,用python的tkinter制作一个messagebox,传入3个参数: title  text timeout.用户可以点击“确定” 关闭窗口:  或者 等待几秒(timeout) 窗口自动关闭: 一开始 我选择tkinter原生的messagebox,代码如下: from tkinter import messagebox, Tk root = Tk() root.withdraw() root.wm_attributes('-topmost', 1) messagebox

python tkinter动态追加按钮等控件可能遇到的问题

小爬最近给同事制作一个小爬虫:具体要求: 1.每天自动定时触发: 2.模拟用户自动登陆: 3.自动爬取对应API接口数据: 4.对爬取结果进行逻辑判断,对符合条件的数据进行规则化列示: 5.列示的行项目支持超链接,如果用用户已经通过浏览器登陆过,该超链接需要能支持单击后在浏览器内新建选项卡并直接进入对应的表单,无需再次登陆. 小爬思考了下:整个程序的功能实现中,2.3.4步骤涉及的功能在先前小爬编写的一些自动化工具中已经有实现过,所以与小爬而言,核心问题就是步骤1和5:经过翻阅相关资料,“每天自

【JavaScript】一个同步于本地时间的动态时钟并且自定义时间格式

本文是对<[JavaScript]一个同步于本地时间的动态时间>一文(点击打开链接)的改进 JavaScript里面的Date类型除了可以直接toLocaleString(),转化成一个以系统格式的时间之外 还可以时间自定义格式,比如可以构造于一个仿QQ聊天框的同步于本地时间的动态时钟 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o

利用Python制作一个连连看小游戏,边学边玩!

导语 今天我们将制作一个连连看小游戏,让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 先睹为快 在cmd窗口运行"Game15.py"文件即可. 效果如下: 原理简介 游戏规则: 玩家通过鼠标交换相邻的拼图,若交换后水平/竖直方向存在连续三个相同的拼图,则这些拼图消失,玩家得分,同时生成新的拼图以补充消失的部分,否则,交换失败,玩家不