您的位置:首页 > 编程语言 > Python开发

python基础:gui编程

2019-02-07 13:08 155 查看

由于使用到了上一篇博文所创建的数据,所以可以先回顾下: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()


获取数据:

更新数据:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: