Python使用Tkinter的ToDo GUI应用程序

先决条件:Tkinter简介

Python提供了多种开发GUI(图形用户界面)的选项。在所有GUI方法中, tkinter是最常用的方法。在本文中, 我们将通过分步指南学习如何使用Tkinter创建ToDo GUI应用程序。

创建一个tkinter:

  • 导入模块– tkinter
  • 创建主窗口(容器)
  • 将任意数量的小部件添加到主窗口。
  • 将事件触发器应用于小部件。

让我们创建一个基于GUI的简单ToDo应用程序, 你可以在其中添加和删除任务。

下面是实现:

# 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 0
      
     return 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 = 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" )
         return
      
     else :
         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()

输出如下:

图片1
图片2
图片3
图片4

首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。


来源:

https://www.srcmini02.com/69751.html

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?