城市信息管理应用

城市信息管理

题目

城市信息管理应用_第1张图片
城市信息管理应用_第2张图片

思路及相关知识点

  • 利用Python的标准GUI库中的Tkinter模块进行应用窗口设计
    其中主要应用到LabelFrame、Label、Button、Entry、Listbox控件
    LabelFrame(master,text=…)
    其中master代表父窗口,text代表文本
    Label(master,text=…)
    其中master可以是窗口也可以是LabelFrame控件
    Button(master,text=,command=…)
    其中master可以是窗口或LabelFrame控件,command用点击按钮要执行的函数名赋值(可以是lambda表达式)
    Entry(master,textvariable=,state=)
    其中master可以是窗口或LabelFrame控件,textvariable应被一个StringVar()类型变量赋值,state可以设置输入框是否可以被修改
    Listbox(master,yscrollcommand=…)
    其中master代表父窗口,yscrollcommand可以为Listbox设置滑轮

  • grid(row=,column=,padx=,pady=)方法可以将控件按照行列定位,padx和pady调整控件之间的间距使其更美观

  • 要注意代码编写的先后顺序,不要在一个对象定义前先使用它

Python代码

from tkinter import *
root = Tk()
root.title("线性表实验")
theLF1 = LabelFrame(root,text="城市信息",padx=10,pady=10)
theLF1.pack(anchor=N)
label1 = Label(theLF1,text="城市名称")
label1.grid(row=0,column=0,padx=5)
e1 = Entry(theLF1)
e1.grid(row=0,column=1)
label2 = Label(theLF1,text="X")
label2.grid(row=0,column=3,padx=5)
e2 = Entry(theLF1)
e2.grid(row=0,column=4)
label3 = Label(theLF1,text="Y")
label3.grid(row=0,column=5,padx=5)
e3 = Entry(theLF1)
e3.grid(row=0,column=6)
theLF2 = LabelFrame(root,text="单链操作")
theLF2.pack(anchor=W)
def front_insert():
    city = (e1.get(),e2.get(),e3.get())
    LB.insert(0,city)
btn1 = Button(theLF2,text="头插",command=front_insert)
btn1.grid(row=0,column=0,pady=8)
def end_insert():
    city = (e1.get(),e2.get(),e3.get())
    LB.insert(END,city)
btn2 = Button(theLF2,text="尾插",command=end_insert)
btn2.grid(row=0,column=1,padx=10)
Locate = Label(theLF2,text="插入位置")
Locate.grid(row=1,column=1,padx=5)
E1 = Entry(theLF2)
E1.grid(row=1,column=2,padx=2)
def insert():
    i = int(E1.get())
    city = (e1.get(),e2.get(),e3.get())
    LB.insert(i,city)
btn3 = Button(theLF2,text="插入",command=insert)
btn3.grid(row=1,column=0,pady=8)
Choice = Label(theLF2,text="更新位置")
Choice.grid(row=3,column=1,padx=5)
E2 = Entry(theLF2)
E2.grid(row=3,column=2,padx=2)
def update():
    m = int(E2.get())
    LB.delete(m)
    city = (e1.get(),e2.get(),e3.get())
    LB.insert(m,city)
btn5 = Button(theLF2,text="更新",command=update)
btn5.grid(row=3,column=0,pady=8)
sb = Scrollbar(root)
sb.pack(side=LEFT,fill=Y)
LB = Listbox(root,yscrollcommand = sb.set)
LB.pack(side=LEFT,fill=BOTH)
sb.config(command=LB.yview)
btn4 = Button(theLF2,text="删除",command=lambda x=LB:x.delete(ACTIVE))
btn4.grid(row=2,column=0,pady=8)
theLF3 = LabelFrame(root,text="查找坐标")
theLF3.pack(anchor=E)
label4 = Label(theLF3,text="城市名称")
label4.grid(row=0,column=0,padx=8)
e4 = Entry(theLF3)
e4.grid(row=0,column=1)
label5 = Label(theLF3,text="X")
label5.grid(row=1,column=0)
var1 = StringVar()
var2 = StringVar()
e5 = Entry(theLF3,textvariable=var1,state="readonly")
e5.grid(row=1,column=1)
label6 = Label(theLF3,text="Y")
label6.grid(row=2,column=0)
e6 = Entry(theLF3,textvariable=var2,state="readonly")
e6.grid(row=2,column=1)
def search():
    search_city = e4.get()
    for i in range(LB.size()):
        if LB.get(i)[0] == search_city:
            var1.set(str(LB.get(i)[1]))
            var2.set(str(LB.get(i)[2]))
btn6 = Button(theLF3,text="查找坐标",command=search)
btn6.grid(row=0,column=2,padx=10)           
theLF4 = LabelFrame(root,text="查找城市")
theLF4.pack(anchor=E)
label7 = Label(theLF4,text="X")
label7.grid(row=0,column=0,padx=8)
e7 = Entry(theLF4)
e7.grid(row=0,column=1)
label8 = Label(theLF4,text="Y")
label8.grid(row=1,column=0,padx=8)
e8 = Entry(theLF4)
e8.grid(row=1,column=1)
label9 = Label(theLF4,text="距离")
label9.grid(row=0,column=2,padx=8)
e9 = Entry(theLF4)
e9.grid(row=0,column=3)
sb2 = Scrollbar(root)
sb2.pack(side=RIGHT,fill=Y)
LB2 = Listbox(root,yscrollcommand = sb2.set)
LB2.pack(side=RIGHT,fill=BOTH)
sb2.config(command=LB2.yview)
def range1():
    LB2.delete(0,END)
    a = int(e7.get())
    b = int(e8.get())
    c = int(e9.get())
    for i in range(LB.size()):
        if ((int(LB.get(i)[1])-a) ** 2) + ((int(LB.get(i)[2])-b) ** 2) <= c ** 2:
            LB2.insert(END,LB.get(i))
btn7 = Button(theLF4,text="查找城市",command=range1)
btn7.grid(row=1,column=3,pady=8)                      

执行效果

城市信息管理应用_第3张图片

你可能感兴趣的:(城市信息管理应用)