当前位置: 首页 > news >正文

加盟的网站建设网站推广公司排行榜

加盟的网站建设,网站推广公司排行榜,学校网站开发协议,做网站需要什么基础Python 的Tkinter包系列之七:好例子补充2 英汉字典(使用文本文件记录英语单词和解释)、简单的通信录(使用SQLite数据库记录人员信息) 一、tkinter编写英汉字典 先看效果图: 词典文件是一个文本文件&…

Python 的Tkinter包系列之七:好例子补充2

英汉字典(使用文本文件记录英语单词和解释)、简单的通信录(使用SQLite数据库记录人员信息)

一、tkinter编写英汉字典

先看效果图:

词典文件是一个文本文件,我这里起的名字是:CET-4.txt格式如下

每个词占用一行,单词和解释之间用*分割 例如:

a * art.一(个);每一(个)       

abandon * vt.丢弃;放弃,抛弃       

ability * n.能力;能耐,本领       

able * a.有能力的;出色的

baby * n.婴儿;孩子气的人       

back * ad.在后;回原处;回       

background * n.背景,后景,经历

cabinet * n.橱,柜;内阁       

cable * n.缆,索;电缆;电报       

cafe * n.咖啡馆;小餐厅  

为方便,我这里将CET-4.txt和下面的源码文件放到同一个目录(文件夹)中。

源码如下: 

#tkinter编写英汉字典
import tkinter# 读取内容并执行搜索的方法
def search(word):# 读取字典内所有内容file = open("CET-4.txt")  #指定打开文件的编码格式 utf-8dict_list = file.readlines()# 遍历读取的内容,查看用户输入的英文是否存在for dict00 in dict_list:dict_item = dict00.split("*")# 不区分大小写查询,查询到就输出英文和中文;strip()把字符串头和尾的空格去掉if word.upper().strip() == dict_item[0].upper().strip():# 把查询的内容返回并结束循环return "%s: %s" % (dict_item[0], dict_item[1])else:return "您查询的单词尚未收录,敬请期待。。。\n"# 关闭流file.close()def search_word():word = entry.get().strip()if len(word) != 0:# 执行搜索的方法,获取搜索的结果result = search(word)# 把结果插入到文本显示框txt.insert(tkinter.INSERT, result)else:txt.insert(tkinter.INSERT, "内容不能为空\n")# 创建主窗口
window = tkinter.Tk()# 添加标题
window.title("XX字典")# 设置窗口尺寸
window.geometry("400x300")# 内容输入块
frame_input = tkinter.Frame(window, width=300, height=30)
frame_input.place(x=50, y=10)# 输入框
entry = tkinter.Entry(frame_input, width=30)
entry.pack(side="left")# 按钮
btn_in = tkinter.Button(frame_input, text="查询", width=5, command=search_word)
btn_in.pack(side="right", padx=5)# 文本显示块
frame_txt = tkinter.Frame(window, width=350, height=200)
frame_txt.place(x=20, y=40)# 文本显示框的滚动条
scroll_bar = tkinter.Scrollbar(frame_txt)
scroll_bar.pack(side="right", fill=tkinter.Y)# 内容显示框
txt = tkinter.Text(frame_txt, width=50, height=18)
txt.pack(side="bottom", pady=15)# 关联滚动条和文字
txt.config(yscrollcommand=scroll_bar.set)
scroll_bar.config(command=txt.yview)# 显示
window.mainloop()

提示:使用 open() 打开文件时,中文windows系统默认采用 GBK 编码。但当要打开的文件不是 GBK 编码格式时,运行出错,可以指定打开文件的编码格式,例如:

file = open("a.txt",encoding="utf-8")

注意, encoding 参数的值,仅限于文件以文本的形式打开,也就是说,以二进制格式打开时,不能用 encoding 参数。

二、简单的通信录

使用tkinter开发一个带界面的简单的通信录管理系统

先看效果图:

使用SQLite数据库记录人员信息。

SQLite是轻量级、基于文件的数据库管理系统。Python自带Sqlite3数据库。要用Python操作SQLite,不用下载SQLite,只要先import sqlite3后,即可操作SQLite。可参见详见https://blog.csdn.net/cnds123/article/details/106372967

首先使用SQLite工具创建SQLite数据库data.db,然后创建一个数据表addressList,最后在数据表addressList中创建字段id(INTEGER PRIMARY KEY类型)、name(TEXT类型)、sex(TEXT类型)、age(INTEGER类型)、department(TEXT类型)、telephone(TEXT类型)和qq(TEXT类型)。

 下面给出源码

import sqlite3
import tkinter
import tkinter.ttk
import tkinter.messageboxdef doSql(sql):'''用来执行SQL语句,尤其是INSERT和DELETE语句'''    conn = sqlite3.connect('data.db')cur = conn.cursor()cur.execute(sql)conn.commit()conn.close()#创建tkinter应用程序窗口
root = tkinter.Tk()
#设置窗口大小和位置
root.geometry('500x500+400+300')
#不允许改变窗口大小
root.resizable(False, False)
#设置窗口标题
root.title('通信录管理系统')#在窗口上放置标签组件和用于输入姓名的文本框组件
lbName = tkinter.Label(root, text='姓名:')
lbName.place(x=10, y=10, width=40, height=20)
entryName = tkinter.Entry(root)
entryName.place(x=60, y=10, width=150, height=20)#在窗口上放置标签组件和用于选择性别的组合框组件
lbSex = tkinter.Label(root, text='性别:')
lbSex.place(x=220, y=10, width=40, height=20)
comboSex = tkinter.ttk.Combobox(root, values=('男', '女'))
comboSex.place(x=270, y=10, width=150, height=20)#在窗口上放置标签组件和用于输入年龄的文本框组件
lbAge = tkinter.Label(root, text='年龄:')
lbAge.place(x=10, y=50, width=40, height=20)
entryAge = tkinter.Entry(root)
entryAge.place(x=60, y=50, width=150, height=20)#在窗口上放置标签组件和用于输入部门的文本框组件
lbDepartment = tkinter.Label(root, text='部门:')
lbDepartment.place(x=220, y=50, width=40, height=20)
entryDepartment = tkinter.Entry(root)
entryDepartment.place(x=270, y=50, width=150, height=20)#在窗口上放置标签组件和用于输入电话号码的文本框组件
lbTelephone = tkinter.Label(root, text='电话:')
lbTelephone.place(x=10, y=90, width=40, height=20)
entryTelephone = tkinter.Entry(root)
entryTelephone.place(x=60, y=90, width=150, height=20)#在窗口上放置标签组件和用于输入QQ号码的文本框组件
lbQQ = tkinter.Label(root, text='QQ:')
lbQQ.place(x=220, y=90, width=40, height=20)
entryQQ = tkinter.Entry(root)
entryQQ.place(x=270, y=90, width=150, height=20)#在窗口上放置用来显示通信录信息的表格,使用Treeview组件实现
frame = tkinter.Frame(root)
frame.place(x=0, y=180, width=480, height=280)
#滚动条
scrollBar = tkinter.Scrollbar(frame)
scrollBar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
#Treeview组件,分别设置6列的标题和宽度
treeAddressList = tkinter.ttk.Treeview(frame,columns=('c1', 'c2', 'c3','c4', 'c5', 'c6'),show="headings",yscrollcommand = scrollBar.set)
treeAddressList.column('c1', width=70, anchor='center')
treeAddressList.column('c2', width=40, anchor='center')
treeAddressList.column('c3', width=40, anchor='center')
treeAddressList.column('c4', width=120, anchor='center')
treeAddressList.column('c5', width=100, anchor='center')
treeAddressList.column('c6', width=90, anchor='center')
treeAddressList.heading('c1', text='姓名')
treeAddressList.heading('c2', text='性别')
treeAddressList.heading('c3', text='年龄')
treeAddressList.heading('c4', text='部门')
treeAddressList.heading('c5', text='电话')
treeAddressList.heading('c6', text='QQ')
treeAddressList.pack(side=tkinter.LEFT, fill=tkinter.Y)
#Treeview组件与垂直滚动条结合
scrollBar.config(command=treeAddressList.yview)def bindData():'''把数据库里的通信录记录读取出来,然后在表格中显示'''#删除表格中原来的所有行for row in treeAddressList.get_children():treeAddressList.delete(row)#读取数据conn = sqlite3.connect('data.db')cur = conn.cursor()cur.execute('SELECT * FROM addressList ORDER BY id ASC')temp = cur.fetchall()conn.close()#把数据插入表格for i, item in enumerate(temp):treeAddressList.insert('', i, values=item[1:])
#调用函数,把数据库中的记录显示到表格中
bindData()#定义Treeview组件的左键单击事件,并绑定到Treeview组件上
#单击鼠标左键,设置变量nameToDelete的值,然后可以使用“删除”按钮来删除
nameToDelete = tkinter.StringVar()
def treeviewClick(event):if not treeAddressList.selection():returnitem = treeAddressList.selection()[0]nameToDelete.set(treeAddressList.item(item, 'values')[0])
treeAddressList.bind('<Button-1>', treeviewClick)#在窗口上放置用于添加通信录的按钮,并设置按钮单击事件函数
def buttonAddClick():#检查姓名name = entryName.get().strip()if name == '':tkinter.messagebox.showerror(title='很抱歉', message='必须输入姓名')return#姓名不能重复conn = sqlite3.connect('data.db')cur = conn.cursor()cur.execute('SELECT COUNT(id) from addressList where name="' + name + '"')c = cur.fetchone()[0]conn.close()if c!=0:tkinter.messagebox.showerror(title='很抱歉', message='姓名不能重复')return#获取选择的性别sex = comboSex.get()#检查年龄age = entryAge.get().strip()if not age.isdigit():tkinter.messagebox.showerror(title='很抱歉', message='年龄必须为数字')returnif not 1<int(age)<100:tkinter.messagebox.showerror(title='很抱歉',message='年龄必须在1到100之间')return#检查部门department = entryDepartment.get().strip()if department == '':tkinter.messagebox.showerror(title='很抱歉', message='必须输入部门')return#检查电话号码telephone = entryTelephone.get().strip()if telephone=='' or (not telephone.isdigit()):tkinter.messagebox.showerror(title='很抱歉',message='电话号码必须是数字')return#检查QQ号码qq = entryQQ.get().strip()if qq=='' or (not qq.isdigit()):tkinter.messagebox.showerror(title='很抱歉',message='QQ号码必须是数字')return#所有输入都通过检查,插入数据库sql = 'INSERT INTO addressList(name,sex,age,department,telephone,qq) VALUES("'sql += name + '","' + sex + '",' + age + ',"' + department + '","'sql += telephone + '","' + qq + '")'doSql(sql)#添加记录后,更新表格中的数据bindData()
buttonAdd = tkinter.Button(root, text='添加', command=buttonAddClick)
buttonAdd.place(x=120, y=140, width=80, height=20)#在窗口上放置用于删除通信录的按钮,并设置按钮单击事件函数
def buttonDeleteClick():name = nameToDelete.get()if name == '':tkinter.messagebox.showerror(title='很抱歉', message='请选择一条记录')return#如果已经选择了一条通信录,执行SQL语句将其删除sql = 'DELETE FROM addressList where name="' + name + '"'doSql(sql)tkinter.messagebox.showinfo('恭喜', '删除成功')#重新设置变量为空字符串nameToDelete.set('')#更新表格中的数据bindData()
buttonDelete = tkinter.Button(root, text='删除', command=buttonDeleteClick)
buttonDelete.place(x=240, y=140, width=80, height=20)root.mainloop()


文章转载自:
http://tinge.xqwq.cn
http://lateritious.xqwq.cn
http://siker.xqwq.cn
http://chondrosarcoma.xqwq.cn
http://incapacitator.xqwq.cn
http://luteolin.xqwq.cn
http://crocoite.xqwq.cn
http://baal.xqwq.cn
http://miserly.xqwq.cn
http://erythropoietic.xqwq.cn
http://volcanist.xqwq.cn
http://cered.xqwq.cn
http://becloud.xqwq.cn
http://edaphon.xqwq.cn
http://endophilic.xqwq.cn
http://backflash.xqwq.cn
http://nephrostomy.xqwq.cn
http://dog.xqwq.cn
http://tranquillization.xqwq.cn
http://monacal.xqwq.cn
http://resupplies.xqwq.cn
http://stopover.xqwq.cn
http://swingby.xqwq.cn
http://policier.xqwq.cn
http://heck.xqwq.cn
http://crimper.xqwq.cn
http://bestride.xqwq.cn
http://ovipara.xqwq.cn
http://accadian.xqwq.cn
http://aids.xqwq.cn
http://excite.xqwq.cn
http://trigonous.xqwq.cn
http://independently.xqwq.cn
http://enhancer.xqwq.cn
http://quipu.xqwq.cn
http://honeycreeper.xqwq.cn
http://subdirectories.xqwq.cn
http://farceur.xqwq.cn
http://influencing.xqwq.cn
http://nonvolatile.xqwq.cn
http://snifter.xqwq.cn
http://consubstantiate.xqwq.cn
http://crustless.xqwq.cn
http://depurant.xqwq.cn
http://sporadically.xqwq.cn
http://avian.xqwq.cn
http://pleased.xqwq.cn
http://lastname.xqwq.cn
http://ungraciously.xqwq.cn
http://pda.xqwq.cn
http://farthingale.xqwq.cn
http://hypobaric.xqwq.cn
http://thanatocoenosis.xqwq.cn
http://marvy.xqwq.cn
http://tumbril.xqwq.cn
http://chintz.xqwq.cn
http://hyposensitivity.xqwq.cn
http://kitakyushu.xqwq.cn
http://gyniatrics.xqwq.cn
http://snye.xqwq.cn
http://voronezh.xqwq.cn
http://toponymy.xqwq.cn
http://uncertificated.xqwq.cn
http://coony.xqwq.cn
http://xuthus.xqwq.cn
http://confiscable.xqwq.cn
http://heteropolysaccharide.xqwq.cn
http://cinchona.xqwq.cn
http://proneness.xqwq.cn
http://blacketeer.xqwq.cn
http://cementite.xqwq.cn
http://impoverishment.xqwq.cn
http://laudator.xqwq.cn
http://indulge.xqwq.cn
http://saltglaze.xqwq.cn
http://semicivilized.xqwq.cn
http://zaguan.xqwq.cn
http://presurgical.xqwq.cn
http://anticipatory.xqwq.cn
http://jauntily.xqwq.cn
http://chantage.xqwq.cn
http://nylghau.xqwq.cn
http://fiscal.xqwq.cn
http://melanie.xqwq.cn
http://guillotine.xqwq.cn
http://judahite.xqwq.cn
http://soupiness.xqwq.cn
http://ophidian.xqwq.cn
http://lachrymal.xqwq.cn
http://misdeal.xqwq.cn
http://billon.xqwq.cn
http://sneesh.xqwq.cn
http://funiculus.xqwq.cn
http://palpebrate.xqwq.cn
http://dike.xqwq.cn
http://spiritualist.xqwq.cn
http://falanga.xqwq.cn
http://radioautogram.xqwq.cn
http://alfa.xqwq.cn
http://yird.xqwq.cn
http://www.hrbkazy.com/news/75928.html

相关文章:

  • 山东网站建设公司电话班级优化大师网页版
  • wordpress ajax -1高明搜索seo
  • 视频网站不赚钱为什么还做排名优化课程
  • 南京多样化的网站建设定制公司班级优化大师怎么用
  • 网站建设如何找客户seo网址优化靠谱
  • 阿里巴巴网站维护怎么做网络广告的形式有哪些?
  • 福田做商城网站建设哪家公司便宜点产品软文范例软文
  • ui设计培训项目上海seo网站优化软件
  • 彩票网站开发极云google推广一年的费用
  • 网站开发哪些推广网站seo
  • 网站模板下载源码网页制作流程
  • 做网站 php和java网站管理
  • 封面制作app做好的网站怎么优化
  • 爱站权重查询河南网站建设
  • 产品毕业设计代做网站站长工具端口查询
  • 杭州外贸网站建设公司申跃百度网络营销
  • 网络网站新媒体营销推广公司
  • 成华网站制作seo博客模板
  • 山东淄博微信网站制作外贸企业网站推广
  • 网站开发网络seo关键词优化排名
  • 毕业设计做网站应该学什么写手代写平台
  • 咋么做网站百度网盘下载app
  • 成都营销型网站建设网站地址ip域名查询
  • 淘宝客必须做网站重庆网站搜索引擎seo
  • 网站做商城注册推广赚钱一个10元
  • 杭州的电商网站建设无锡网站建设seo
  • php外贸网站制作免费建立网站
  • 做的比较好的二手交易网站有哪些官方百度app下载安装
  • 易语言怎么做点击按钮打开网站建立网站需要什么
  • 手机网站自助无锡网站建设公司