python利用mysql数据库实现一个中英文翻译程序兼单词试卷生成并改阅功能,并可以爬取有道官网进行在线翻译。
直接上运行截图(代码在后面)
开始界面
使用navicat查看mysql数据库中的数据
单词查询功能测试
本地翻译一个本地数据库中有的单词
本地翻译一个本地数据库中没有的单词
爬取有道官网进行在线翻译
单词录入功能测试
我是录入了很多单词,这里只放一张图片
然后查看数据库中的数据
单词测试功能测试
点击单词测试结果如下
难度选择中等后点击生成结果如下
在下面的输入框中输入你的答案然后点击提交,程序将会把你的试卷改出来
注意事项
这个程序是我好久以前用当时的电脑做的,现在电脑中本程序所需要的的数据库表并不全,大家如果需要使用的话,可以根据我的代码自己创建数据库,程序中的所有功能都是可以正常使用的。
源代码(如转发请注明出处,谢谢)
# -*- coding: utf-8 -*-
"""
Created on Tue Dec 24 13:06:14 2019@author: 一叶落而知天下秋
"""
import random
import wx
import pymysql
from urllib import request, parse
import json
import pymysqlclass priframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='多多瑜教育管理中心',pos=(650,300),size=(900,600))panel=wx.Panel(self)image_file = '背景2.png'to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()panel.bitmap = wx.StaticBitmap(panel,-1, to_bmp_image, (0, 0))#set_title = '%s %d x %d' % (image_file,200,400)#self.SetTitle(set_title)'''panel.Bind(wx.EVT_ERASE_BACKGROUND,self.OnEraseBack)def OnEraseBack(self,event):dc = event.GetDC()if not dc:dc = wx.ClientDC(self)rect = self.GetUpdateRegion().GetBox()dc.SetClippingRect(rect)dc.Clear()bmp = wx.Bitmap("1.jpg")dc.DrawBitmap(bmp, 0, 0)'''#wx.StaticText(parent=panel,label='欢迎来到多多瑜教育管理中心',pos=(20,20))bmp=wx.Image('背景21.png', wx.BITMAP_TYPE_ANY).ConvertToBitmap()#self.button = wx.BitmapButton(panel, -1, bmp, pos=(10, 20))self.buttondancichaxun=wx.Button(panel.bitmap,label='单词查询',pos=(500,250),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttondancichaxun,self.buttondancichaxun)self.buttondanciluru=wx.Button(parent=panel.bitmap,label='单词录入',pos=(580,250),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttondanciluru,self.buttondanciluru)self.buttondancixiugai=wx.Button(parent=panel.bitmap,label='单词修改',pos=(660,250),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttondancixiugai,self.buttondancixiugai)self.buttondancishanchu=wx.Button(parent=panel.bitmap,label='单词删除',pos=(740,250),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttondancishanchu,self.buttondancishanchu)self.buttonjiansuojilu=wx.Button(parent=panel.bitmap,label='检索记录',pos=(420,370),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttonjiansuojilu,self.buttonjiansuojilu)self.buttondanciceshi=wx.Button(parent=panel.bitmap,label='单词测试',pos=(500,370),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttondanciceshi,self.buttondanciceshi)self.buttonweizhijiansuo=wx.Button(parent=panel.bitmap,label='位置检索',pos=(420,310),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttonweizhijiansuo,self.buttonweizhijiansuo)self.buttonlijuchaxun=wx.Button(parent=panel.bitmap,label='例句查询',pos=(500,310),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttonlijuchaxun,self.buttonlijuchaxun)self.buttonlijuluru=wx.Button(parent=panel.bitmap,label='例句录入',pos=(580,310),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttonlijuluru,self.buttonlijuluru)self.buttonlijuxiugai=wx.Button(parent=panel.bitmap,label='例句修改',pos=(660,310),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttonlijuxiugai,self.buttonlijuxiugai)self.buttonlijushanchu=wx.Button(parent=panel.bitmap,label='例句删除',pos=(740,310),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttonlijushanchu,self.buttonlijushanchu)self.buttonduanyuchaxun=wx.Button(parent=panel.bitmap,label='短语查询',pos=(580,370),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttonduanyuchaxun,self.buttonduanyuchaxun)self.buttonbeifen=wx.Button(parent=panel.bitmap,label='数据备份',pos=(660,370),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttonbeifen,self.buttonbeifen)self.buttonhuifu=wx.Button(parent=panel.bitmap,label='数据恢复',pos=(740,370),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttonhuifu,self.buttonhuifu)self.buttonwenjianchuangjian=wx.Button(panel.bitmap,label='创建文件',pos=(420,250),size=(70,40))self.Bind(wx.EVT_BUTTON,self.onbuttonwenjianchuangjian,self.buttonwenjianchuangjian)def onbuttonbeifen(self,event):conn=pymysql.connect(host='localhost',user='root',passwd='123456',db='sys')conn2=pymysql.connect(host='localhost',user='root',passwd='123456',db='sys')cur=conn.cursor()cur2=conn2.cursor()cur2.execute('delete from Wordbeifen')print('123')#row=cur.fetchone()#shuliang=row[0]cur.execute('select * from Word')row22=cur.fetchone()print(row22)while row22:cur2.execute('insert into Wordbeifen(danci,fanyi,difficulty) values(%s,%s,%d)',(row22[0],row22[1],row22[2]))row22=cur.fetchone()print(row22)conn.commit()conn2.commit()cur.close()cur2.close()conn.close()conn2.close()beifenframe(None).Show()def onbuttonhuifu(self,event):conn=pymysql.connect(host='localhost',user='root',passwd='123456',db='sys')conn2=pymysql.connect(host='localhost',user='root',passwd='123456',db='sys')cur=conn.cursor()cur2=conn2.cursor()cur2.execute('delete from Word')print('123')#row=cur.fetchone()#shuliang=row[0]cur.execute('select * from Wordbeifen')row22=cur.fetchone()print(row22)while row22:cur2.execute('insert into Word(danci,fanyi,difficulty) values(%s,%s,%d)',(row22[0],row22[1],row22[2]))row22=cur.fetchone()print(row22)conn.commit()conn2.commit()cur.close()cur2.close()conn.close()conn2.close()huifuframe(None).Show()def onbuttondancichaxun(self,event):dancichaxunframe(None).Show()def onbuttondanciluru(self,event):danciluruframe(None).Show()def onbuttondancixiugai(self,event):dancixiugaiframe(None).Show()def onbuttondancishanchu(self,event):dancishanchuframe(None).Show() def onbuttondanciceshi(self,event):danciceshiframe(None).Show() def onbuttonlijuchaxun(self,event):lijuchaxunframe(None).Show()def onbuttonlijuluru(self,event):lijuluruframe(None).Show()def onbuttonlijuxiugai(self,event):lijuxiugaiframe(None).Show()def onbuttonlijushanchu(self,event):lijushanchuframe(None).Show()def onbuttonduanyuchaxun(self,event):duanyuchaxunframe(None).Show()def onbuttonwenjianchuangjian(self,event):wenjianchuangjianframe(None).Show()def onbuttonweizhijiansuo(self,event):weizhijiansuoframe(None).Show()def onbuttonjiansuojilu(self,event):jiansuojiluframe(None).Show()
class beifenframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='数据备份',size=(200,150),pos=(650,100))panel=wx.Panel(self)self.result=wx.StaticText(parent=panel,label='数据备份成功',pos=(20,20),size=(150,20))
class huifuframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='数据恢复',size=(200,150),pos=(650,100))panel=wx.Panel(self)self.result=wx.StaticText(parent=panel,label='数据恢复成功',pos=(20,20),size=(150,20))
class dancichaxunframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='单词查询',size=(400,300),pos=(650,100))panel=wx.Panel(self)image_file = '通用背景1.jpg'to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()#panel.bitmap = wx.StaticBitmap(panel,-1, to_bmp_image, (0, 0))self.text=wx.StaticText(parent=panel,label='请输入你想要查询的单词:',pos=(20,20),size=(200,20))#font = wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.NORMAL)#self.text.SetFont(font)#self.text.SetForegroundColour('blue')self.inputdanci=wx.TextCtrl(parent=panel,pos=(250,20),size=(100,20))self.result=wx.StaticText(parent=panel,label='',pos=(20,80),size=(200,20))self.result.SetBackgroundColour('lucency')self.buttonchaxun=wx.Button(parent=panel,label='英译汉',pos=(20,200))self.Bind(wx.EVT_BUTTON,self.onbuttonchaxun,self.buttonchaxun)self.buttonchaxun2=wx.Button(parent=panel,label='汉译英',pos=(120,200))self.Bind(wx.EVT_BUTTON,self.onbuttonchaxun2,self.buttonchaxun2)self.buttonzaixianfanyi=wx.Button(parent=panel,label='在线翻译',pos=(220,200))self.Bind(wx.EVT_BUTTON,self.onbuttonzaixianfanyi,self.buttonzaixianfanyi)def onbuttonchaxun(self,event):self.result.SetLabel('')string=str(self.inputdanci.GetValue())if string=='':self.result.SetLabel("输入不能为空,请重新输入")else:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='sys')cur=conn.cursor()cur.execute('SELECT * FROM Word where word=%s',string)row = cur.fetchone()if row:string=row[1]self.result.SetLabel('本地翻译的中文为:'+string)else:self.result.SetLabel("本地词库中不存在该单词,请重新输入")cur.close()conn.close()def onbuttonchaxun2(self,event):self.result.SetLabel('')string=str(self.inputdanci.GetValue())if string=='':self.result.SetLabel("输入不能为空,请重新输入")else:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='sys')cur=conn.cursor()cur.execute('SELECT * FROM Word where translate=%s',string)row = cur.fetchone()if row:string=row[0]self.result.SetLabel('本地词库的英文翻译为:'+string)else:self.result.SetLabel("该中文不存在,请重新输入")cur.close()conn.close()def onbuttonzaixianfanyi(self,event):if str(self.inputdanci.GetValue())=='':self.result.SetLabel('输入不能为空,请重新输入')else:req_url = 'http://fanyi.youdao.com/translate' # 创建连接接口# 创建要提交的数据Form_Date = {}Form_Date['i'] =str(self.inputdanci.GetValue()) # 要翻译的内容可以更改Form_Date['doctype'] = 'json'data = parse.urlencode(Form_Date).encode('utf-8') #数据转换response = request.urlopen(req_url, data) #提交数据并解析html = response.read().decode('utf-8') #服务器返回结果读取#print(html)# 可以看出html是一个json格式translate_results = json.loads(html) #以json格式载入translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式调取self.result.SetLabel('有道在线翻译为:'+translate_results) #输出结果
class lijuchaxunframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='例句查询',size=(400,300),pos=(650,100))panel=wx.Panel(self)wx.StaticText(parent=panel,label='请输入你想要查询例句的单词:',pos=(20,20),size=(220,20))self.inputdanci=wx.TextCtrl(parent=panel,pos=(20,60))self.result=wx.StaticText(parent=panel,label='',pos=(20,100),size=(300,20))self.buttonchaxun=wx.Button(parent=panel,label='查询',pos=(20,200))self.Bind(wx.EVT_BUTTON,self.onbuttonchaxun,self.buttonchaxun)#self.buttonzaixianfanyi=wx.Button(parent=panel,label='在线翻译',pos=(120,200))#self.Bind(wx.EVT_BUTTON,self.onbuttonzaixianfanyi,self.buttonzaixianfanyi)def onbuttonchaxun(self,event):self.result.SetLabel('')string=str(self.inputdanci.GetValue())if str(self.inputdanci.GetValue())=='':self.result.SetLabel("输入不能为空,请重新输入")else:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='sys')cur=conn.cursor()cur.execute('SELECT liju FROM lijubiao where danci=%s',string)row = cur.fetchone()if row:string=row[0]if string!='':self.result.SetLabel('该单词的例句:'+string)else:self.result.SetLabel('本地数据库没有该单词的例句')else:self.result.SetLabel("该单词不存在,请重新输入")cur.close()conn.close()
class duanyuchaxunframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='短语查询',size=(400,300),pos=(650,100))panel=wx.Panel(self)wx.StaticText(parent=panel,label='请输入你想要查询的短语:',pos=(20,20),size=(300,15))self.inputdanci=wx.TextCtrl(parent=panel,pos=(20,60),size=(300,20))self.result=wx.StaticText(parent=panel,label='',pos=(20,100),size=(300,20))self.buttonchaxun=wx.Button(parent=panel,label='本地查询',pos=(20,200))self.Bind(wx.EVT_BUTTON,self.onbuttonchaxun,self.buttonchaxun)self.buttonzaixianfanyi=wx.Button(parent=panel,label='在线翻译',pos=(120,200))self.Bind(wx.EVT_BUTTON,self.onbuttonzaixianfanyi,self.buttonzaixianfanyi)def onbuttonchaxun(self,event):self.result.SetLabel('')string=str(self.inputdanci.GetValue())if str(self.inputdanci.GetValue())=='':self.result.SetLabel("输入不能为空,请重新输入")else:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='sys')cur=conn.cursor()cur.execute('SELECT fanyi FROM duanyubiao where duanyu=%s',string)row = cur.fetchone()if row:string=row[0]self.result.SetLabel('本地翻译为:'+string)else:self.result.SetLabel("该单词不存在,请重新输入")cur.close()conn.close()def onbuttonzaixianfanyi(self,event):if str(self.inputdanci.GetValue())=='':self.result.SetLabel("输入不能为空,请重新输入")else:req_url = 'http://fanyi.youdao.com/translate' # 创建连接接口# 创建要提交的数据Form_Date = {}Form_Date['i'] =str(self.inputdanci.GetValue()) # 要翻译的内容可以更改Form_Date['doctype'] = 'json'data = parse.urlencode(Form_Date).encode('utf-8') #数据转换response = request.urlopen(req_url, data) #提交数据并解析html = response.read().decode('utf-8') #服务器返回结果读取#print(html)# 可以看出html是一个json格式translate_results = json.loads(html) #以json格式载入translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式调取self.result.SetLabel('有道在线翻译为:'+translate_results) #输出结果
class danciluruframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='单词录入',pos=(650,300),size=(400,300))panel=wx.Panel(self)wx.StaticText(parent=panel,label='请分别输入所要录入的单词以及翻译:',pos=(20,20),size=(300,15))wx.StaticText(parent=panel,label='单词:',pos=(20,50),size=(50,20))wx.StaticText(parent=panel,label='翻译:',pos=(20,80),size=(50,20))self.inputdanci=wx.TextCtrl(parent=panel,pos=(80,50),size=(200,20))self.inputfanyi=wx.TextCtrl(parent=panel,pos=(80,80),size=(200,20))self.buttonluru=wx.Button(parent=panel,label='录入',pos=(20,190),size=(100,30))self.Bind(wx.EVT_BUTTON,self.onbuttonluru,self.buttonluru)self.result=wx.StaticText(parent=panel,label='',pos=(20,150),size=(300,20))def onbuttonluru(self,event):string1=str(self.inputdanci.GetValue())string2=str(self.inputfanyi.GetValue())if string1=='' or string2=='':self.result.SetLabel('录入失败,请输入正确格式英文单词以及翻译')else:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='sys')cur=conn.cursor()#cur2=conn.cursor()if len(string1)<8:difficulty=1elif len(string1)<11:difficulty=2else:difficulty=3cur.execute('insert into Word(word,translate,difficulty) values (%s,%s,%s)',(string1,string2,difficulty))#cur2.execute('insert into Wordbeifen(danci,fanyi,difficulty) values (%s,%s,%s)',(string1,string2,difficulty))conn.commit()cur.close()#cur2.close()conn.close()self.result.SetLabel('%s:%s\t录入成功'%(string1,string2))
class wenjianchuangjianframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='文件创建',pos=(650,300),size=(400,300))panel=wx.Panel(self)wx.StaticText(parent=panel,label='请分别输入文件名以及文件中的内容:',pos=(20,20),size=(300,15))wx.StaticText(parent=panel,label='文件名:',pos=(20,50),size=(50,20))wx.StaticText(parent=panel,label='内容:',pos=(20,80),size=(50,20))self.inputdanci=wx.TextCtrl(parent=panel,pos=(80,50),size=(200,20))self.inputfanyi=wx.TextCtrl(parent=panel,pos=(80,80),size=(200,90),style=wx.TE_MULTILINE)self.buttonluru=wx.Button(parent=panel,label='创建',pos=(20,190),size=(100,30))self.Bind(wx.EVT_BUTTON,self.onbuttonluru,self.buttonluru)self.result=wx.StaticText(parent=panel,label='',pos=(20,170),size=(300,20))def onbuttonluru(self,event):string1=str(self.inputdanci.GetValue())string2=str(self.inputfanyi.GetValue())if string1=='' or string2=='':self.result.SetLabel('创建失败,文件名以及内容不可为空,请重新输入')else:f1=open(string1+'.txt','w+',encoding= 'utf-8')f1.write(string2)f1.close()self.result.SetLabel('%s创建成功'%(string1+'.txt'))
class weizhijiansuoframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='位置检索',pos=(650,300),size=(400,300))panel=wx.Panel(self)wx.StaticText(parent=panel,label='请分别输入文件名以及检索的单词:',pos=(20,20),size=(300,20))wx.StaticText(parent=panel,label='文件名:',pos=(20,50),size=(50,20))wx.StaticText(parent=panel,label='单词:',pos=(200,50),size=(50,20))wx.StaticText(parent=panel,label='结果:',pos=(20,80),size=(50,20))self.inputdanci=wx.TextCtrl(parent=panel,pos=(80,50),size=(100,20))self.inputdanci2=wx.TextCtrl(parent=panel,pos=(250,50),size=(80,20))self.inputfanyi=wx.TextCtrl(parent=panel,pos=(80,80),value='此栏用于输出结果,不用填',size=(200,90),style=wx.TE_MULTILINE)self.buttonluru=wx.Button(parent=panel,label='检索',pos=(20,190),size=(100,30))self.Bind(wx.EVT_BUTTON,self.onbuttonluru,self.buttonluru)self.result=wx.StaticText(parent=panel,label='',pos=(20,170),size=(300,20))def onbuttonluru(self,event):string1=str(self.inputdanci.GetValue())string3=str(self.inputdanci2.GetValue())string2=''l=string3.split()len1=len(l)if string1=='' or string3=='':self.result.SetLabel('检索失败,文件名以及检索单词不可为空,请重新输入')elif len1!=1:self.result.SetLabel('单词不能含有空格,请重新输入')else:try:f1=open(string1+'.txt','r',encoding= 'utf-8')lis=f1.readlines()except:self.result.SetLabel('文件不存在,请重新输入')else:count2=0for i in range(len(lis)):count=0print(len(lis))lis[i]=lis[i].split()for l in range(len(lis[i])):if lis[i][l]==string3:count=count+1count2=count2+1print('第%d行第%d个单词'%(i+1,l+1))string2=string2+'第%d行第%d个单词\n'%(i+1,l+1)if l==len(lis[i])-1:if count!=0: print('第%d行一共出现了%s%d次'%(i+1,'end',count))string2=string2+'第%d行一共出现了%s%d次\n'%(i+1,string3,count)if i==len(lis)-1:print('123456')string2=string2+'%s在文件中一共出现了%d次\n'%(string3,count2)self.inputfanyi.SetValue(string2)f1.close()f2=open('检索记录.txt','a+',encoding= 'utf-8')f2.write(string2)f2.close()self.result.SetLabel('检索完成,结果如上所示')
class jiansuojiluframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='位置检索',pos=(650,300),size=(400,300))panel=wx.Panel(self)wx.StaticText(parent=panel,label='检索记录如下:',pos=(20,20),size=(300,20))self.inputfanyi=wx.TextCtrl(parent=panel,pos=(20,50),size=(300,180),style=wx.TE_MULTILINE)f1=open('检索记录.txt','r',encoding= 'utf-8')string=f1.read()f1.close()self.inputfanyi.SetValue(string)
class lijuluruframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='例句录入',pos=(650,300),size=(400,300))panel=wx.Panel(self)wx.StaticText(parent=panel,label='请分别输入所要录入的单词以及例句:',pos=(20,20),size=(300,20))self.inputdanci=wx.TextCtrl(parent=panel,pos=(20,40),size=(150,20))self.inputfanyi=wx.TextCtrl(parent=panel,pos=(20,70),size=(300,20))self.buttonluru=wx.Button(parent=panel,label='录入',pos=(20,190),size=(100,30))self.Bind(wx.EVT_BUTTON,self.onbuttonluru,self.buttonluru)self.result=wx.StaticText(parent=panel,label='',pos=(20,150),size=(300,20))def onbuttonluru(self,event):string1=str(self.inputdanci.GetValue())string2=str(self.inputfanyi.GetValue())if string1=='' or string2=='':self.result.SetLabel('录入失败,请输入正确格式英文单词以及例句')else:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='sys')cur=conn.cursor()cur.execute('insert into lijubiao(danci,liju) values (%s,%s)',(string1,string2))conn.commit()cur.close()conn.close()self.result.SetLabel('%s:%s\t录入成功'%(string1,string2))
class dancixiugaiframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='单词修改',pos=(650,300),size=(400,300))panel=wx.Panel(self)wx.StaticText(parent=panel,label='请分别输入所要修改的单词以及修改后的翻译',pos=(20,20),size=(300,20))wx.StaticText(parent=panel,label='欲修改的单词:',pos=(20,50),size=(80,20))wx.StaticText(parent=panel,label='修改后的翻译:',pos=(20,80),size=(80,20))self.inputdanci=wx.TextCtrl(parent=panel,pos=(120,50),size=(200,20))self.inputfanyi=wx.TextCtrl(parent=panel,pos=(120,80),size=(200,20))self.buttonxiugai=wx.Button(parent=panel,label='修改',pos=(20,200))self.Bind(wx.EVT_BUTTON,self.onbuttonxiugai,self.buttonxiugai)self.result=wx.StaticText(parent=panel,label='',pos=(20,150),size=(300,20))def onbuttonxiugai(self,event):string1=str(self.inputdanci.GetValue())string2=str(self.inputfanyi.GetValue())if string1=='' or string2=='':self.result.SetLabel('修改失败,单词以及结果不能为空值,请重新输入')else:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='sys')cur=conn.cursor()cur.execute('SELECT * FROM Word where danci=%s',string1)row = cur.fetchone()if row:cur.execute('update Word set fanyi = %s where danci = %s',(string2,string1))conn.commit()cur.close() conn.close()self.result.SetLabel('修改成功')else:self.result.SetLabel('没有该单词,请重新输入')cur.close()conn.close()
class lijuxiugaiframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='例句修改',pos=(650,300),size=(400,300))panel=wx.Panel(self)wx.StaticText(parent=panel,label='请分别输入所要修改的单词以及修改后的例句:',pos=(20,20),size=(300,20))wx.StaticText(parent=panel,label='欲修改的单词:',pos=(20,50),size=(80,50))wx.StaticText(parent=panel,label='修改后的翻译:',pos=(20,80),size=(80,50))self.inputdanci=wx.TextCtrl(parent=panel,pos=(120,50),size=(100,20))self.inputfanyi=wx.TextCtrl(parent=panel,pos=(120,80),size=(100,20))self.buttonxiugai=wx.Button(parent=panel,label='修改',pos=(20,200))self.Bind(wx.EVT_BUTTON,self.onbuttonxiugai,self.buttonxiugai)self.result=wx.StaticText(parent=panel,label='',pos=(20,170),size=(300,20))def onbuttonxiugai(self,event):string1=str(self.inputdanci.GetValue())string2=str(self.inputfanyi.GetValue())if string1=='' or string2=='':self.result.SetLabel('修改失败,单词以及结果不能为空值,请重新输入')else:conn=pymysql.connect(host='localhost',user='root',passwd='123456',db='sys')cur=conn.cursor()cur.execute('SELECT * FROM lijubiao where danci=%s',string1)row = cur.fetchone()if row:cur.execute('update lijubiao set liju = %s where danci = %s',(string2,string1))conn.commit()cur.close()conn.close()self.result.SetLabel('修改成功')else:self.result.SetLabel('没有该单词,请重新输入')cur.close()conn.close()
class dancishanchuframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='单词删除',size=(400,300),pos=(650,100))panel=wx.Panel(self)wx.StaticText(parent=panel,label='请输入你想要删除的单词:',pos=(20,20),size=(300,20))self.inputdanci=wx.TextCtrl(parent=panel,pos=(20,50),size=(100,20))self.result=wx.StaticText(parent=panel,label='',pos=(20,100))self.buttonshanchu=wx.Button(parent=panel,label='删除',pos=(20,200),size=(100,40))self.Bind(wx.EVT_BUTTON,self.onbuttonshanchu,self.buttonshanchu)def onbuttonshanchu(self,event):self.result.SetLabel('')string=str(self.inputdanci.GetValue())if string=='':self.result.SetLabel('单词不能为空,请重新输入')else:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='sys')cur=conn.cursor()cur.execute('SELECT * FROM Word where danci=%s',string)row = cur.fetchone()if row:cur.execute('delete from Word where danci = %s',string)conn.commit()cur.close()conn.close()self.result.SetLabel('删除成功')else:self.result.SetLabel('没有该单词,请重新输入')cur.close()conn.close()
class lijushanchuframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='例句删除',size=(400,300),pos=(650,100))panel=wx.Panel(self)wx.StaticText(parent=panel,label='请输入你想要删除的例句:',pos=(20,20),size=(300,20))self.inputdanci=wx.TextCtrl(parent=panel,pos=(20,50))self.result=wx.StaticText(parent=panel,label='',pos=(20,100))self.buttonshanchu=wx.Button(parent=panel,label='删除',pos=(20,200))self.Bind(wx.EVT_BUTTON,self.onbuttonshanchu,self.buttonshanchu)def onbuttonshanchu(self,event):self.result.SetLabel('')string=str(self.inputdanci.GetValue())if string=='':self.result.SetLabel('例句输入不能为空,请重新输入')else:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='sys')cur=conn.cursor()cur.execute('SELECT * FROM lijubiao where liju=%s',string)row = cur.fetchone()if row:cur.execute('delete from lijubiao where liju = %s',string)conn.commit()cur.close()conn.close()self.result.SetLabel('删除成功')else:self.result.SetLabel('没有该例句,请重新输入')cur.close()conn.close()
class danciceshiframe(wx.Frame):def __init__(self,sup):wx.Frame.__init__(self,parent=sup,title='单词测试',size=(400,300),pos=(650,100))panel=wx.Panel(self)self.biaoti=wx.StaticText(parent=panel,label='生成测试题目如下:',pos=(20,20),size=(300,20))self.multiText=wx.TextCtrl(parent=panel,pos=(20,40),size=(330,110),style=wx.TE_MULTILINE)self.mText=wx.TextCtrl(parent=panel,pos=(20,160),size=(330,50),style=wx.TE_MULTILINE)self.difficulty=wx.StaticText(parent=panel,label='选择难度(简单,中等,难)',pos=(20,220),size=(150,20))self.buttonshengcheng=wx.Button(parent=panel,label='生成',pos=(230,220),size=(45,20))self.Bind(wx.EVT_BUTTON,self.onbuttonshengcheng,self.buttonshengcheng)self.buttontijiao=wx.Button(parent=panel,label='提交',pos=(280,220),size=(45,20))self.Bind(wx.EVT_BUTTON,self.onbuttontijiao,self.buttontijiao)self.inputdifficulty=wx.TextCtrl(parent=panel,pos=(170,220),size=(50,20))def onbuttonshengcheng(self,event):if self.inputdifficulty.GetValue()=='':self.multiText.SetValue('请输入难度再生成试题')else:if self.inputdifficulty.GetValue()=='简单':self.nanyi=1elif self.inputdifficulty.GetValue()=='中等':self.nanyi=2else:self.nanyi=3conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='sys')cur=conn.cursor()cur.execute('SELECT word FROM Word where difficulty=%s',self.nanyi)#self.lis=[]self.li=[]row = cur.fetchone()#print(row)while row:#self.lis.append(str(row[0]))self.li.append(str(row[0]))row=cur.fetchone()random.shuffle(self.li)print(self.li)self.lis=[]for ii in range(len(self.li)):self.lis.append(self.li[ii]+'___\n')self.string='这是一套难度为:('+self.inputdifficulty.GetValue()+')的单词测试题\n'for i in range(0,3):self.string=self.string+self.lis[i]self.multiText.SetValue(self.string)cur.close()conn.close()def onbuttontijiao(self,event):if self.multiText.GetValue()=='':self.mText.SetValue('暂未生成试题,提交个锤子')else:self.s=str(self.mText.GetValue())self.l=self.s.split()if len(self.l)!=3:self.mText.SetValue('你提交的答案数目与题目不对应,请检查后提交')else:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='sys')cur=conn.cursor()cur.execute('SELECT count(*) FROM Word')r = cur.fetchone()ss='你的测试结果如下:\n'#print(r)#print(len(self.lis))for i in range(3):cur.execute('SELECT * FROM Word')r1=cur.fetchone()print(r1[0])print(self.li[i])while r1:if self.li[i]==str(r1[0]):if self.l[i]==r1[1]:print('1')ss=ss+'第%d道题是正确的\n'%(i+1)breakelse:print('2')ss=ss+'第%d道题是错误的,正确答案为:%s\n'%(i+1,r1[1])breakr1=cur.fetchone()print(r1) self.mText.SetValue(ss)cur.close()conn.close()
if __name__=='__main__':app=wx.App()frame=priframe(None)frame.Show()app.MainLoop()
python利用mysql数据库实现一个中英文翻译程序兼单词试卷生成并改阅功能,并可以爬取有道官网进行在线翻译。相关推荐
- Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤
Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤 文章目录 Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤 背景:LOL这款游戏有着大量的玩家,这个游戏里面人们津津乐道的皮肤,每一款 ...
- 【考公人的福利】Python爬取中公官网资料
[考公人的福利]Python爬取中公官网资料 一.简述 二.代码 三.运行结果 一.简述 写这个代码的目的是能够高效率提取中公官网的资料,例如:申论.行测.面试热点.公安基础知识等.大家可以根据个人需 ...
- python爬虫爬取王者荣耀官网全部英雄头像(源码分享)
这篇文章为源码分享,爬虫的分析过程请阅读文章 <用python爬取王者荣耀官网的英雄皮肤海报(含源码)> 源码 import requests import json from bs4 i ...
- Python爬虫实战 | (1) 爬取猫眼电影官网的TOP100电影榜单
在本篇博客中,我们将使用requests+正则表达式来爬取猫眼电影官网的TOP100电影榜单,获取每部电影的片名,主演,上映日期,评分和封面等内容. 打开猫眼Top100,分析URL的变化:发现Top ...
- python爬虫爬取王者荣耀官网全部装备图片(源码分享)
这篇文章为源码分享,爬虫的分析过程请阅读文章 <用python爬取王者荣耀官网的英雄皮肤海报(含源码)> 源码 import requests from bs4 import Beauti ...
- python爬取天眼查存入excel表格_爬虫案例1——爬取新乡一中官网2018届高考录取名单...
有一种非常常见并且相对简单的网络爬虫,工作流程大概是这样的: 访问目标网页 提取目标网页内表格信息 写入excel文件并保存 初次实践,我决定尝试写一个这样的爬虫.经过一番构思,我准备把爬取新乡一中官 ...
- Node 插件 爬取王者荣耀官网英雄信息,并生成数据库
文章结构 打开官网看接口地址 打开官网 游戏资料里的英雄资料,并打开后台 接下来是英雄技能 技能结构路径方便抓取 jQ的获取元素这里不细说 重头戏 抓包到到数据库 全部代码 看数据库 总结 打开官网看 ...
- Python爬虫之selenium爬取英雄联盟官网英雄皮肤图片下载到本地和保存到数据库
从英雄联盟皮肤网站的网页源代码中获取不到英雄的皮肤地址 通过selenium可以轻松获取想要的内容 源码展示 from selenium import webdriver from time impo ...
- python工商银行流水_python爬取银行名称和官网地址
话不多说直接上代码: import re from urllib import request from urllib.request import urlopen import pymysql as ...
最新文章
- 漫画:如何用 K8s 实现 CI/CD 发布流程?
- 算法----------最长上升子序列(Java 版本)
- Ubuntu 使用国内apt源
- pymysql.err.OperationalError: (1045, “Access denied for user ‘system‘@‘::1‘ (using password: YES)“)
- Python中bytes和str区别详细介绍
- 31 socket客户端. 服务器 异常 语法
- 台湾印象之八:海角七号
- dbcc dbreindex server sql_DBCC DBREINDEX重建索引提高SQL Server性能
- RTX5 | 信号量01 - 信号量的使用
- Enterprise Library: Logging and Instrumentation Application Block概述
- CVS的几个学习小站及配置说明
- 【Spring】Spring Eureka Client 注册报 registration status: 204
- c语言利用fun求最小值,c语言:请编写函数fun(),他的功能是:求f(0)到f(50)的最小值,已知:f(0)=f(1)=1,f(2)=0,f...
- java 内部类 加载_Java 内部类基础介绍
- xshell文件传输乱码_xshell5 显示中文乱码解决方法,远程连接Linux CentOS
- python中右对齐_python右对齐的实例方法
- (SSM,JQUERY-EASYUI,MYSQL)快递物流系统
- 工作中遇到大小端数据存储格式
- RROR: Check hive‘s usability failed, please check the status of your cluster解决办法
- DATEDIF函数: