2020-08-14 tkinter 简单任务单添加列表

示例代码 来自:https://github.com/Dvlv/Tkinter-By-Example

# -*- coding: utf-8 -*-
"""
Created on Fri Aug 14 13:21:57 2020

@author: Roy
"""
#导入库并定义名称
import tkinter as tk
#定义Todo,继承自tk,TK
class Todo(tk.Tk):
    def __init__(self,tasks=None):
        #这里使用使用super调用父类的所有属性和方法
        super().__init__()
        
        #task不存在则定义task,有则加入task
        if not tasks:
            self.tasks = []
        else:
            self.tasks =tasks
        #设置窗口大小和标题
        self.title('To-Do App v1')
        self.geometry('300x400')
        
        #将标签加入到task中
        todo1 =tk.Label(self,text='Add Items Here',bg ='lightgrey',fg='black',pady=10)
        
        self.tasks.append(todo1)
        for task in self.tasks:
            task.pack(side=tk.TOP,fill = tk.X)
        
        #设置一各窗口来输入task文本内容
        self.task_create = tk.Text(self,height=3,bg = 'white',fg='black')
        self.task_create.pack(side = tk.BOTTOM,fill = tk.X)
        #指定控件焦点,选择窗口则焦点聚集在输入框
        self.task_create.focus_set()
        
        #把添加task和回车键进行事件绑定
        self.bind('<Return>',self.add_task)
        self.colour_schemes = [{"bg": "lightgrey", "fg": "black"}, {"bg": "grey", "fg": "white"}]

    def add_task(self, event=None):
        #取出输入框文本,去前后空格
         task_text = self.task_create.get(1.0,tk.END).strip()
        
         if len(task_text) > 0:
             new_task = tk.Label(self, text=task_text, pady=10)
             #背景颜色选取,'_,'代表选取集合中后半部分的余数
             _,task_style_choice = divmod(len(self.tasks), 2)
            #选取颜色列表的第一个颜色字典,设置列表背景颜色和前景颜色
             my_scheme_choice = self.colour_schemes[task_style_choice]
            
             new_task.configure(bg=my_scheme_choice["bg"])
             new_task.configure(fg=my_scheme_choice["fg"])
            
             new_task.pack(side=tk.TOP, fill=tk.X)
            #把task加入tasks中以便背景颜色的计数保持更新
             self.tasks.append(new_task)
            #清除输入文本框的内容
             self.task_create.delete(1.0, tk.END)
#主函数和使窗口常驻
if __name__ == "__main__":
    todo = Todo()
    todo.mainloop()
        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值