先决条件: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()
输出:
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
评论前必须登录!
注册