本实例设计一个包含Label组件、Entry组件、Combobox组件、Radiobutton组件、Checkbutton组件的GUI界面。其中,Combobox组件来自于thinter.ttk模块。程序运行后,输入考生姓名,选择考生省份、地区,并选择考生类别和专业等信息,单击‘增加’按钮,将学生信息添加到列表框中;选中列表框中的信息后,单击‘删除’按钮,将删除列表框中的信息。
from tkinter import *
from tkinter import ttk, messagebox
win = Tk()
win.title('考试系统注册!!!')
win.geometry('600x400')
#fram1=Frame()
#fram1.pack()
#varname=StringVar() #
label1=Label(win,text='学生姓名:',justify=LEFT,width=10)
label1.grid(row=1,column=1,padx=30)
entry1=Entry(win,width=14)
entry1.grid(row=1,column=2,pady=10,padx=10)
label2=Label(win,text='省份:',justify=LEFT,width=10)
label2.grid(row=2,column=1,padx=30)
datas={'辽宁省':['沈阳市'],'广东省':['广州市'],'湖南省':['长沙市'],'浙江省':['杭州市']}
comboPrvince1=ttk.Combobox(win,width=12,values=tuple(datas.keys()))
comboPrvince1.grid(row=2,column=2,pady=10,padx=10)
def comboChange(event):
grade=comboPrvince1.get()
if grade:
comboPrvince2['values']=datas.get(grade)
else:
comboPrvince2.set([])
comboPrvince1.bind('<>',comboChange)
label3=Label(win,text='地区:',justify=LEFT,width=10)
label3.grid(row=2,column=3,padx=20)
comboPrvince2=ttk.Combobox(win,width=12)
comboPrvince2.grid(row=2,column=4,pady=10,padx=10)
label4=Label(win,text='请选择类别:',justify=LEFT,width=10)
label4.grid(row=3,column=1,padx=20)
Student_radio=IntVar()#与学生累别相关联份的变量
Student_radio.set(1)
radio1=Radiobutton(win,text='本科学生',variable=Student_radio,value=1)
radio1.grid(row=3,column=2)
radio2=Radiobutton(win,text='专科学生',variable=Student_radio,value=0)
radio2.grid(row=3,column=3)
major=IntVar() #与英语专业相关联的变量
check=Checkbutton(win,text='是否英语专业?',variable=major)
check.grid(row=4,column=1,pady=10)
def add_information(): #添加按钮事件处理函数
if not entry1.get():
messagebox.showwarning(title='注意!!!', message="输入学生姓名!")
elif not comboPrvince1.get():
messagebox.showwarning(title='注意!!!', message="请选择省份!")
elif not comboPrvince2.get():
messagebox.showwarning(title='注意!!!', message="请择地区!")
else:
result = '学生姓名:' + entry1.get()
result = result + '; 省份:' + comboPrvince1.get()
result = result + '; 地区:' + comboPrvince2.get()
result = result + '; 类别:' + ('本科学生' if Student_radio.get() else '专科学生')
result = result + '; 英语专业:' + ('yes' if major.get() else 'No')
listbox_student.insert(0, result)
buttonAdd=Button(win,text='增加',width=10,command=add_information)
buttonAdd.grid(row=4,column=2)
def del_information(): #删除按钮事件处理函数
selection=listbox_student.curselection()
if selection:
listbox_student.delete(selection)
else:
messagebox.showwarning(title='注意!!!',message="请选中要删除的学生信息!")
buttonDel=Button(win,text='删除',width=10,command=del_information)
buttonDel.grid(row=4,column=3,)
listbox_student=Listbox(win,width=83) #创建列表框组件
listbox_student.grid(row=5,column=1,columnspan=4,padx=5)
win.mainloop()