python基础:gui编程

由于使用到了上一篇博文所创建的数据,所以可以先回顾下:https://blog.csdn.net/eyeofeagle/article/details/86766141
python提供的gui编程库和java的gui类似,都是提供输入框,按钮,窗口等控件,来进行页面展示的控制
在这里插入图片描述

1,gui的几本组件:窗口,文本,按钮

window_label.py

#创建窗口: 显示文字,按钮,弹框
from tkinter import *
#显示文本内容
Label(text="hello world").pack()

#启动窗口
mainloop()

在这里插入图片描述
window_button.py

#窗口: 放入按钮
from tkinter import *
from tkinter.messagebox import showinfo

#1,获取窗口
window=Tk()

#2, 定义按钮
def reply():
    showinfo(title="title1",message="按钮被点击")

button=Button(window,text="press this !", command=reply)
#3,启动窗口
button.pack()
window.mainloop()

在这里插入图片描述

2, gui几本组件:输入框(输入输出)

window_input.py

#设置输入框
from tkinter import *
from tkinter.messagebox import showinfo

#创建窗口
window=Tk()
window.title("输入输出")
window.iconbitmap("a.jpg")

#设置输入框
Label(window, text="输入name").pack()
ent=Entry(window)
ent.pack(side="top")



#创建提交按钮
def reply(name,window):
    showinfo(title="reply", message="hello %s" %name)
    window.quit()

btn=Button(window,text="submit", command=( lambda: reply(ent.get(),window )  ))
btn.pack(side="left")

#启动窗口
window.mainloop()

在这里插入图片描述
window_input2.py

#输入框
from tkinter import *
from tkinter.messagebox import showinfo,showerror
import shelve

#定义变量
shelve_file_name="../oop/data/shelve_obj"
db=shelve.open(shelve_file_name)
fieldnames=("name","age","job")

def fetchRecord():
    key = entries["key"].get()#获取:输入key这个输入框的值
    try:
        record = db[key]
    except:
        showerror("title=error", message="no such key")
    else:
        for field in fieldnames:
            ent=entries[field]
            ent.delete(0, len(str(entries[field].get()) )) #输入框:删除原数据
            entries[field].insert(0, getattr(record, field))# 输入框:设置正确数据

def updateRecord():
    #取出db字典文件的值
    db_key=entries['key'].get()
    if db_key in db:
        record=db[db_key]
    else:
        from chapter1.oop.class_obj import teacher
        record=teacher(name="?",age="?")
    #对象赋值
    for field in fieldnames:
        setattr(record,field, entries[field].get())
    #保存数据
    db[db_key]=record

#定义方法
def mkWidgets():
    global entries
    window=Tk()
    window.title("people shelve")
    form=Frame(window)
    form.pack()

    #遍历属性元组
    entries={}
    for (index, label) in enumerate(("key",)+fieldnames):
        lab=Label(form, text=label)
        ent=Entry(form)
        lab.grid(row=index, column=0)
        ent.grid(row=index, column=1)

        print(index, label,ent)
        entries[label]=ent #收集:所有的输入框对象, {key ,输入框}

    #设置按钮
    Button(window,text="fetch", command=fetchRecord).pack(side="left")
    Button(window, text="update", command=updateRecord).pack(side="left")
    Button(window, text="quit", command=window.quit()).pack(side="right")
    return window


#创建窗口
window=mkWidgets()
window.mainloop()
db.close()

在这里插入图片描述
获取数据:
在这里插入图片描述
更新数据:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/eyeofeagle/article/details/86771245