GUI编程+翻译器小程序

写在前面:教程地址
代码直接CV就可以用,不过之前得安装wxpython模块
pip install wxpython

# 开发时间:2021/1/12 10:11
# 开发工具:PyCharm
# 开发者:GoTop
import wx
import urllib.request  # 导入模块
import urllib.parse
import json
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "翻译器", size=(600, 200))
        panel = wx.Panel(self)#创建一个画布,然后创建功能区并放到画布上
        #创建一个标题,放在panel中
        self.title = wx.StaticText(panel,label = '简单翻译器')
        #创建一个静态文本,放在panel中
        self.translate = wx.StaticText(panel,label = '翻译内容:')
        #创建一个输入文本框,放在panel中
        self.tran_slate = wx.TextCtrl(panel,style = wx.TE_LEFT)
        #创建一个翻译按钮,放在panel中
        self.button_ts = wx.Button(panel,label = '翻译')
        #绑定按钮事件,点击触发翻译函数
        self.button_ts.Bind(wx.EVT_BUTTON, self.OnclickEventname)
        #创建一个关闭按钮,放在panel中
        self.button_shutdown = wx.Button(panel, label='关闭')
        #绑定按钮事件,点击触发关闭函数
        self.button_shutdown.Bind(wx.EVT_BUTTON, self.OnclickEvent)
        container_one = wx.BoxSizer(wx.HORIZONTAL)
        #把静态文本和输入文本框放在这个BoxSizer当中
        container_one.Add(self.translate,proportion = 0,flag = wx.ALL,border = 7)
        container_one.Add(self.tran_slate,proportion = 1,flag = wx.ALL,border = 7)
        #再创建一个水平排布的BoxSizer
        container_two = wx.BoxSizer(wx.HORIZONTAL)
        #把两个按钮放到这个BoxSizer中
        container_two.Add(self.button_ts,proportion = 0,flag = wx.ALIGN_CENTER,border = 4)
        container_two.Add(self.button_shutdown,proportion =0,flag = wx.ALIGN_CENTER,border = 4)
        #创建一个竖直排布的BoxSizer
        sizers = wx.BoxSizer(wx.VERTICAL)
        #把上面的内容都放到这个BoxSizer当中即可
        sizers.Add(self.title,proportion=0,flag=wx.BOTTOM|wx.TOP|wx.ALIGN_CENTER,border=10)
        sizers.Add(container_one,proportion = 0,flag =wx.EXPAND|wx.LEFT|wx.RIGHT,border=40)
        sizers.Add(container_two, proportion=0, flag=wx.ALIGN_CENTER|wx.TOP, border=10)
        panel.SetSizer(sizers)
    def OnclickEventname(self,e):
        global panel
        urnm = self.tran_slate.GetValue()
        url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
        data = {}
        data['i'] = urnm
        data['from'] = 'AUTO'
        data['to'] = 'AUTO'
        data['smartresult'] = 'dict'
        data['client'] = 'fanyideskweb'
        data['salt'] = '15823411455528'
        data['sign'] = 'd03024a90896a5eb31a74a9344657b0e'
        data['doctype'] = 'json'
        data['version'] = '2.1'
        data['keyfrom'] = 'fanyi.web'
        data['action'] = 'FY_BY_REALTlME'
        data = urllib.parse.urlencode(data).encode('utf-8')
        r = urllib.request.Request(url, data)
        r.add_header('User-Agent','Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 87.0.4280.88Safari / 537.36')
        response = urllib.request.urlopen(r)
        html = response.read().decode('utf-8')
        trs = json.loads(html)
        result  = trs['translateResult'][0][0]['tgt']
        print("翻译结果:",result)
        wx.MessageBox('翻译结果:%s'%result,'翻译器')
    def OnclickEvent(self,e):
        self.Destroy()
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

运行结果
在这里插入图片描述
在这里插入图片描述

总结:
学习了python中的GUI编程,也算是拔了草,一直想学python的web开发,奈何太懒了一直没有动工。今天学到GUI编程,用到了wxpython模块,Frame框架,panel容器。
wxpython是供我们进行图形界面开发的模块之一,还有一些比如:Tkinker,Flexx,Kivy,PyQt,PyGTK。
今天就主要学了wxpython

通过对一个窗口的初始化,来体验wxpython的工作流程

import wx
class App(wx.App): #定义App子类
    def OnInit(self): #通过该方法初始化子类
        window = wx.Frame(parent = None,title = '初始化',size = (400,400),pos = (500,200)) #frame框架,保存标题和功能区
        window.Show() #窗口对象,显示窗口
        return True
if __name__ == '__main__':
    app = App() #应用程序对象
    app.MainLoop() #主事件循环
    '''
             应用程序对象
    app启功   窗口对象
             窗口组件
             主事件循环
    '''

在这里插入图片描述
Frame框架:可以理解为一种容器,用来存放标题和功能区

panel容器:英文翻译有镶嵌板的意思,这就好理解了,他就是用来放置窗口组件的。比如一些文本信息,输入框等。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值