个性化阅读
专注于IT技术分析

Python:使用Tkinter的年龄计算器

先决条件:Tkinter简介

Python提供了多种开发GUI(图形用户界面)的选项。在所有的GUI方法中, Tkinter是最常用的方法。它是Python随附的Tk GUI工具包的标准Python接口。带有tkinter的Python输出了创建GUI应用程序的最快, 最简单的方法。现在, 取决于开发人员的想象力或必要性, 他/她想使用此工具包进行开发的内容。

创建一个tkinter:

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

让我们创建一个基于GUI的简单”年龄计算器”应用程序, 该应用程序可以根据用户给定的日期和出生日期来计算年龄。

下面是实现:

# import all functions from the tkinter   
from tkinter import *
  
# import messagebox class from tkinter
from tkinter import messagebox
  
# Function for clearing the  
# contents of all text entry boxes
def clearAll() :
  
     # deleting the content from the entry box
     dayField.delete( 0 , END)
     monthField.delete( 0 , END)
     yearField.delete( 0 , END)
     givenDayField.delete( 0 , END)
     givenMonthField.delete( 0 , END)
     givenYearField.delete( 0 , END)
     rsltDayField.delete( 0 , END)
     rsltMonthField.delete( 0 , END)
     rsltYearField.delete( 0 , END)
  
# function for checking error
def checkError() :
  
     # if any of the entry field is empty
     # then show an error message and clear 
     # all the entries
     if (dayField.get() = = " " or monthField.get() == " "
         or yearField.get() = = " " or givenDayField.get() == " "
         or givenMonthField.get() = = " " or givenYearField.get() == " ") :
  
         # show the error message
         messagebox.showerror( "Input Error" )
  
         # clearAll function calling
         clearAll()
          
         return - 1
  
# function to calculate Age 
def calculateAge() :
  
     # check for error
     value = checkError()
  
     # if error is occur then return
     if value = =  - 1 :
         return
      
     else :
          
         # take a value from the respective entry boxes
         # get method returns current text as string
         birth_day = int (dayField.get())
         birth_month = int (monthField.get())
         birth_year = int (yearField.get())
  
         given_day = int (givenDayField.get())
         given_month = int (givenMonthField.get())
         given_year = int (givenYearField.get())
          
          
         # if birth date is greater then given birth_month 
         # then donot count this month and add 30 to the date so 
         # as to subtract the date and get the remaining days 
         month = [ 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ]
          
         if (birth_day> given_day):
             given_month = given_month - 1
             given_day = given_day + month[birth_month - 1 ] 
                      
                      
         # if birth month exceeds given month, then 
         # donot count this year and add 12 to the 
         # month so that we can subtract and find out 
         # the difference 
         if (birth_month> given_month):
             given_year = given_year - 1
             given_month = given_month + 12
                      
         # calculate day, month, year 
         calculated_day = given_day - birth_day; 
         calculated_month = given_month - birth_month; 
         calculated_year = given_year - birth_year;
  
         # calculated day, month, year write back
         # to the respective entry boxes
  
         # insert method inserting the  
         # value in the text entry box.
          
         rsltDayField.insert( 10 , str (calculated_day))
         rsltMonthField.insert( 10 , str (calculated_month))
         rsltYearField.insert( 10 , str (calculated_year))
      
  
# 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 name of tkinter GUI window 
     gui.title( "Age Calculator" )
  
      # Set the configuration of GUI window
     gui.geometry( "525x260" )
  
     # Create a Date Of Birth : label 
     dob = Label(gui, text = "Date Of Birth" , bg = "blue" )
  
     # Create a Given Date : label
     givenDate = Label(gui, text = "Given Date" , bg = "blue" )
  
     # Create a Day : label
     day = Label(gui, text = "Day" , bg = "light green" )
  
     # Create a Month : label
     month = Label(gui, text = "Month" , bg = "light green" )
  
     # Create a Year : label
     year = Label(gui, text = "Year" , bg = "light green" )
  
     # Create a Given Day : label
     givenDay = Label(gui, text = "Given Day" , bg = "light green" )
  
     # Create a Given Month : label
     givenMonth = Label(gui, text = "Given Month" , bg = "light green" )
  
     # Create a Given Year : label
     givenYear = Label(gui, text = "Given Year" , bg = "light green" )
  
     # Create a Years : label
     rsltYear = Label(gui, text = "Years" , bg = "light green" )
  
     # Create a Months : label
     rsltMonth = Label(gui, text = "Months" , bg = "light green" )
  
     # Create a Days : label
     rsltDay = Label(gui, text = "Days" , bg = "light green" )
  
     # Create a Resultant Age Button and attached to calculateAge function
     resultantAge = Button(gui, text = "Resultant Age" , fg = "Black" , bg = "Red" , command = calculateAge)
  
     # Create a Clear All Button and attached to clearAll function
     clearAllEntry = Button(gui, text = "Clear All" , fg = "Black" , bg = "Red" , command = clearAll)
  
     # Create a text entry box for filling or typing the information.  
     dayField = Entry(gui)
     monthField = Entry(gui)
     yearField = Entry(gui)
      
     givenDayField = Entry(gui)
     givenMonthField = Entry(gui)
     givenYearField = Entry(gui)
      
     rsltYearField = Entry(gui)
     rsltMonthField = Entry(gui)
     rsltDayField = Entry(gui)
  
  
     # grid method is used for placing  
     # the widgets at respective positions  
     # in table like structure .
     dob.grid(row = 0 , column = 1 )
      
     day.grid(row = 1 , column = 0 )
     dayField.grid(row = 1 , column = 1 )
      
     month.grid(row = 2 , column = 0 )
     monthField.grid(row = 2 , column = 1 )
      
     year.grid(row = 3 , column = 0 )
     yearField.grid(row = 3 , column = 1 )
      
     givenDate.grid(row = 0 , column = 4 )
      
     givenDay.grid(row = 1 , column = 3 )
     givenDayField.grid(row = 1 , column = 4 )
      
     givenMonth.grid(row = 2 , column = 3 )
     givenMonthField.grid(row = 2 , column = 4 )
      
     givenYear.grid(row = 3 , column = 3 )
     givenYearField.grid(row = 3 , column = 4 )
      
     resultantAge.grid(row = 4 , column = 2 )
      
     rsltYear.grid(row = 5 , column = 2 )
     rsltYearField.grid(row = 6 , column = 2 )
      
     rsltMonth.grid(row = 7 , column = 2 )
     rsltMonthField.grid(row = 8 , column = 2 )
      
     rsltDay.grid(row = 9 , column = 2 )
     rsltDayField.grid(row = 10 , column = 2 )
  
     clearAllEntry.grid(row = 12 , column = 2 )
  
     # Start the GUI
     gui.mainloop()

输出:

图片1
图片2

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


赞(0) 打赏
未经允许不得转载:srcmini » Python:使用Tkinter的年龄计算器
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏