首页 > 编程语言 > 详细

python项目-棋钟

时间:2021-06-07 20:29:10      阅读:23      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

技术分享图片

 

 

技术分享图片

 

 

 设有标准型和沙漏型两种模式,可设置四种局时(1分钟,5分钟,10分钟,20分钟)。

 

 


 

 

import tkinter
import math
import tkinter.messagebox

class clock(object):
    jushi=300
    jiamiao=0
    jishi=1
    num1 = jushi
    num2 = jushi
    mode=0
    pausemode=0
    def __init__(self):
        self.root=tkinter.Tk()
        self.root.minsize(610,320)
        self.root.maxsize(610,320)
        stringg = ‘计时器 ‘ + str(int(self.jushi / 60)) + ‘分钟 ‘
        if self.mode == 0:
            stringg += ‘标准型‘
        elif self.mode == 1:
            stringg += ‘沙漏型‘
        self.root.title(stringg)
        #self.root.title = ‘计时器‘
        self.t1=tkinter.StringVar()

        self.t2 = tkinter.StringVar()
        self.t1.set(self.num1)
        self.t2.set(self.num2)
        self.sta=[0,0]
        self.pausesta=[0,0]
        self.menus()
        self.time1 = tkinter.StringVar()
        self.show1 = tkinter.Label(self.root, bd=3, bg=‘white‘, font=(
            ‘宋体‘, 30), anchor=‘e‘, textvariable=self.t1)
        self.root.after(int(1000*self.jishi), self.update)
        self.show1.place(x=20, y=20, width=270, height=70)
        self.button1 = tkinter.Button(self.root, text=‘红‘, command=lambda: self.press(0))
        self.button1.place(x=20, y=100, width=270, height=70)
        self.show2 = tkinter.Label(self.root, bd=3, bg=‘white‘, font=(
            ‘宋体‘, 30), anchor=‘e‘, textvariable=self.t2)
        self.show2.place(x=320, y=20, width=270, height=70)
        self.button2 = tkinter.Button(self.root, text=‘黑‘, command=lambda: self.press(1))
        self.button2.place(x=320, y=100, width=270, height=70)
        self.resetbutton=tkinter.Button(self.root, text=‘重置‘, command=self.reset)
        self.resetbutton.place(x=20,y=180,width=270,height=70)
        self.pausebutton = tkinter.Button(self.root, text=‘暂停‘, command=self.pause)
        self.pausebutton.place(x=320, y=180, width=270, height=70)
        #self.root.mainloop()
    def pause(self):
        if self.sta==[0,0] and self.pausemode==0:
            return
        if self.pausemode==0:
            self.pausesta=self.sta
            self.sta=[0,0]
            self.pausebutton["text"]=‘继续‘
            self.pausemode=1
            return
        if self.pausemode==1:
            self.sta=self.pausesta
            self.pausebutton["text"] = ‘暂停‘
            self.pausemode = 0
            return

    def reset(self):
        self.pausemode=0
        self.pausesta=[0,0]
        self.pausebutton["text"] = ‘暂停‘
        self.num1 = self.jushi
        self.num2 = self.jushi
        self.t1.set(self.num1)
        self.t2.set(self.num2)
        stringg=‘计时器 ‘+str(int(self.jushi/60))+‘分钟 ‘
        if self.mode ==0:
            stringg+=‘标准型‘
        elif self.mode==1:
            stringg+=‘沙漏型‘
        self.root.title(stringg)
        self.sta=[0,0]
    def setmode(self,i):
        self.mode=i
        self.reset()
    def update(self):
        self.num1-=self.sta[0]
        self.num2-=self.sta[1]
        self.num1=round(self.num1,1)
        self.num2 = round(self.num2, 1)

        self.t1.set(self.num1)
        self.t2.set(self.num2)
        if self.num1*self.num2==0:
            tkinter.messagebox.showinfo("game over","gameover!")
            self.reset()
            
        self.root.after(int(1000*self.jishi),self.update)
        #self.show2.after(1000,self.update)
    def setjushi(self,i):
        self.jushi=i
        self.reset()
    def press(self,i):

        self.sta[1-i]=self.jishi
        self.sta[i]=0
        if self.mode==1:
            self.sta[i]=-self.jishi
    def setjingque(self,i):
        self.jishi=i
        self.reset()
    def menus(self):
        # 添加菜单
        # 创建总菜单
        allmenu = tkinter.Menu(self.root)
        # 添加子菜单
        filemenu = tkinter.Menu(allmenu, tearoff=0)
        # 添加选项卡
        filemenu.add_command(
            label=‘标准型(T)            Alt+1‘,command=lambda: self.setmode(0))
        filemenu.add_command(
            label=‘沙漏型(S)            Alt+2‘,command=lambda: self.setmode(1))

        allmenu.add_cascade(label=‘查看(V)‘, menu=filemenu)

        # 添加子菜单2
        editmenu = tkinter.Menu(allmenu, tearoff=0)
        # 添加选项卡
        menujushi = tkinter.Menu(editmenu, tearoff=0)
        menujushi.add_command(label=‘1分钟‘,command=lambda: self.setjushi(60))
        menujushi.add_command(label=‘5分钟‘, command=lambda: self.setjushi(300))
        menujushi.add_command(label=‘10分钟‘, command=lambda: self.setjushi(600))
        menujushi.add_command(label=‘20分钟‘, command=lambda: self.setjushi(1200))
        editmenu.add_cascade(label=‘局时‘,menu=menujushi)
        editmenu.add_command(label=‘加秒‘)
        jingquemenu=tkinter.Menu(editmenu,tearoff=0)
        jingquemenu.add_command(label=‘1‘,command=lambda: self.setjingque(1))
        jingquemenu.add_command(label=‘10‘,command=lambda: self.setjingque(0.1))
        editmenu.add_cascade(label=‘精确系数‘,menu=jingquemenu)
        allmenu.add_cascade(label=‘编辑(E)‘,menu=editmenu)

        # 添加子菜单3
        helpmenu = tkinter.Menu(allmenu, tearoff=0)
        # 添加选项卡
        helpmenu.add_command(label=‘查看帮助(V)       F1‘)
        # 添加分割线
        helpmenu.add_separator()
        # 添加选项卡
        helpmenu.add_command(label=‘关于棋钟(A)‘)
        allmenu.add_cascade(label=‘帮助(H)‘, menu=helpmenu)
        self.root.config(menu=allmenu)
myclock=clock()
myclock.root.mainloop()

  

 

python项目-棋钟

原文:https://www.cnblogs.com/hyffff/p/14859994.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!