我学python(8)--类似转盘小程序

一个类似于转盘的小程序,按下开始键,界面上的格子就会一个接一个的变颜色,按下结束键便会暂停

#导入模块
import tkinter
import threading
import time

class zhuang:
    #初始化方法
    def __init__(self):
        # 定义一个变量,用于判断是否按下开始的标志
        self.isloop = False
        # 定义一个变量,用于判断是否按下结束的标志
        self.condition = True
        # 定义一个变量,用于记录停止时的位置
        self.id = 0

        # 创建主界面
        self.root = tkinter.Tk()
        self.root.minsize(400, 400)
        self.root.title('大转盘')
        self.buju()
        # 加入消息循环
        self.root.mainloop()

    # 页面布局
    def buju(self):
        btn1 = tkinter.Label(text='苹果', bg='red', font=('黑体', 12))
        btn1.place(x=30, y=20, width=60, height=50)

        btn2 = tkinter.Label(text='香蕉', bg='white', font=('黑体', 12))
        btn2.place(x=120, y=20, width=60, height=50)

        btn3 = tkinter.Label(text='香梨', bg='white', font=('黑体', 12))
        btn3.place(x=210, y=20, width=60, height=50)

        btn4 = tkinter.Label(text='葡萄', bg='white', font=('黑体', 12))
        btn4.place(x=300, y=20, width=60, height=50)

        btn5 = tkinter.Label(text='龙眼', bg='white', font=('黑体', 12))
        btn5.place(x=300, y=100, width=60, height=50)

        btn6 = tkinter.Label(text='甘蔗', bg='white', font=('黑体', 12))
        btn6.place(x=300, y=180, width=60, height=50)

        btn7 = tkinter.Label(text='橘子', bg='white', font=('黑体', 12))
        btn7.place(x=300, y=260, width=60, height=50)

        btn8 = tkinter.Label(text='凤梨', bg='white', font=('黑体', 12))
        btn8.place(x=210, y=260, width=60, height=50)

        btn9 = tkinter.Label(text='榴莲', bg='white', font=('黑体', 12))
        btn9.place(x=120, y=260, width=60, height=50)

        btn10 = tkinter.Label(text='地瓜', bg='white', font=('黑体', 12))
        btn10.place(x=30, y=260, width=60, height=50)

        btn11 = tkinter.Label(text='柚子', bg='white', font=('黑体', 12))
        btn11.place(x=30, y=180, width=60, height=50)

        btn12 = tkinter.Label(text='橙子', bg='white', font=('黑体', 12))
        btn12.place(x=30, y=100, width=60, height=50)

        btnstart = tkinter.Button(text='开始', bg='#D1EEEE', font=('黑体', 12), command=self.newtask)
        btnstart.place(x=120, y=140, width=60, height=50)

        btnend = tkinter.Button(text='结束', bg='#D1EEEE', font=('黑体', 12), command=self.endtask)
        btnend.place(x=210, y=140, width=60, height=50)

        # 把所有按键装在一个列表中
        self.roundlist = [btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10, btn11, btn12]

    # 转动的方法
    def round1(self):
        # 如果id 等于列表的长度
        if self.id == len(self.roundlist):
            # id的值要给i 作为索引,所以需要减一
            self.id -= 1
        # 如果上一次按过了开始键
        if self.isloop == True:
            return
        # 把储存的id 的值给i作为索引
        i = self.id
        while self.condition == True:
            # 每次循环程序睡眠0.2秒
            time.sleep(0.2)
            # 将所有标签变为白色
            for x in self.roundlist:
                # 将所有的按键颜色变为白色
                x['bg'] = 'white'
            # 把此时的标签变为红色
            self.roundlist[i]['bg'] = '#9932CC'
            # 变量
            i += 1
            self.id = i
            if i >= len(self.roundlist):
                i = 0
    #开启一个线程
    def newtask(self):
        # 建立一个新的线程
        self.condition = True
        t = threading.Thread(target=self.round1)
        # 开启线程运行
        t.start()
        # 将按下的开始的标志改变为已按
        self.isloop = True

    # 按下结束的函数
    def endtask(self):
        # 将开始的标志改变为已按
        self.condition = False
        # 将按下开始标志改变为关闭
        self.isloop = False
#实例化对象
ss = zhuang()

我学python(8)--类似转盘小程序_第1张图片

Python学习交流、资源共享群:563626388 QQ

你可能感兴趣的:(我学python(8)--类似转盘小程序)