【Python使用Tkinter的ToDo GUI应用程序】先决条件:Tkinter简介
Python提供了多种开发GUI(图形用户界面)的选项。在所有GUI方法中, tkinter是最常用的方法。在本文中, 我们将通过分步指南学习如何使用Tkinter创建ToDo GUI应用程序。
创建一个tkinter:
- 导入模块– tkinter
- 创建主窗口(容器)
- 将任意数量的小部件添加到主窗口。
- 将事件触发器应用于小部件。
下面是实现:
# import all functions from the tkinter
from tkinter import *# import messagebox class from tkinter
from tkinter import messagebox# global list is declare for storing all the task
tasks_list = []# global variable is declare for couting the task
counter = 1# Function for checking input error when
# empty input is given in task field
def inputError() :# check for enter task field is empty or not
if enterTaskField.get() = = "" :# show the error message
messagebox.showerror( "Input Error" )return 0return 1# Function for clearing the contents
# of task number text field
def clear_taskNumberField() :# clear the content of task number text field
taskNumberField.delete( 0.0 , END)# Function for clearing the contents
# of task entry field
def clear_taskField() :# clear the content of task field entry box
enterTaskField.delete( 0 , END)# Function for inserting the contents
# from the task entry field to the text area
def insertTask():global counter# check for error
value = http://www.srcmini.com/inputError()# if error occur then return
if value = = 0 :
return# get the task string concatenating
# with new line character
content = enterTaskField.get() +"\n"# store task in the list
tasks_list.append(content)# insert content of task entry field to the text area
# add task one by one in below one by one
TextArea.insert( 'end -1 chars' , "[ " + str (counter) + " ] " + content)# incremented
counter + = 1# function calling for deleting the content of task field
clear_taskField()# function for deleting the specified task
def delete() :global counter# handling the empty task error
if len (tasks_list) = = 0 :
messagebox.showerror( "No task" )
return# get the task number, which is required to delete
number = taskNumberField.get( 1.0 , END)# checking for input error when
# empty input in task number field
if number = = "\n" :
messagebox.showerror( "input error" )
returnelse :
task_no = int (number)# function calling for deleting the
# content of task number field
clear_taskNumberField()# deleted specified task from the list
tasks_list.pop(task_no - 1 )# decremented
counter - = 1# whole content of text area widget is deleted
TextArea.delete( 1.0 , END)# rewriting the task after deleting one task at a time
for i in range ( len (tasks_list)) :
TextArea.insert( 'end -1 chars' , "[ " + str (i + 1 ) + " ] " + tasks_list[i])# Driver code
if __name__ = = "__main__" :# create a GUI window
gui = Tk()# set the background colour of GUI window
gui.configure(background = "light green" )# set the title of GUI window
gui.title( "ToDo App" )# set the configuration of GUI window
gui.geometry( "250x300" )# create a label : Enter Your Task
enterTask = Label(gui, text = "Enter Your Task" , bg = "light green" )# create a text entry box
# for typing the task
enterTaskField = Entry(gui)# create a Submit Button and place into the root window
# when user press the button, the command or
# function affiliated to that button is executed
Submit = Button(gui, text = "Submit" , fg = "Black" , bg = "Red" , command = insertTask)# create a text area for the root
# with lunida 13 font
# text area is for writing the content
TextArea = Text(gui, height = 5 , width = 25 , font = "lucida 13" )# create a label : Delete Task Number
taskNumber = Label(gui, text = "Delete Task Number" , bg = "blue" )taskNumberField = Text(gui, height = 1 , width = 2 , font = "lucida 13" )# create a Delete Button and place into the root window
# when user press the button, the command or
# function affiliated to that button is executed .
delete = Button(gui, text = "Delete" , fg = "Black" , bg = "Red" , command = delete)# create a Exit Button and place into the root window
# when user press the button, the command or
# function affiliated to that button is executed .
Exit = Button(gui, text = "Exit" , fg = "Black" , bg = "Red" , command = exit)# grid method is used for placing
# the widgets at respective positions
# in table like structure.
enterTask.grid(row = 0 , column = 2 )# ipadx attributed set the entry box horizontal size
enterTaskField.grid(row = 1 , column = 2 , ipadx = 50 )Submit.grid(row = 2 , column = 2 )# padx attributed provide x-axis margin
# from the root window to the widget.
TextArea.grid(row = 3 , column = 2 , padx = 10 , sticky = W)taskNumber.grid(row = 4 , column = 2 , pady = 5 )taskNumberField.grid(row = 5 , column = 2 )# pady attributed provide y-axis
# margin from the widget.
delete.grid(row = 6 , column = 2 , pady = 5 )Exit.grid(row = 7 , column = 2 )# start the GUI
gui.mainloop()
输出如下:
文章图片
文章图片
文章图片
文章图片
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
推荐阅读
- Python Tkinter–验证条目小部件
- Python使用Django的ToDo webapp项目示例
- Python使用.kv文件在kivy中切换按钮
- 竞争性编码的Python技巧
- APICloud AVM框架列表组件list-view的使用flex布局教程
- MySQL数据库——高级SQL语句
- #yyds干货盘点# 剖析 Kubernete 业务副本及水平扩展底层原理(06)
- #yyds干货盘点# 如何在 Linux 上安装配置 NTP 服务器和客户端()
- #yyds干货盘点# Kubernetes 如何通过 StatefulSet 支持有状态应用((07))