wxpython记录生词GUI程序

不使用数据库,实现一个简单的记生词软件,基本功能包括,添加新的生词及其中文含义,浏览已经记录的单词,随机选择部分单词进行复习。可考虑其它拓展的功能。

这里使用wxpython的基本操作,以及类与函数的调用方式。

import random
import wx

mydic = {}
num = []
taged = []


class InfoPanel(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, "词典",  pos=(0, 0), size=(450, 400))
        panel = wx.Panel(self, -1)
        rev = wx.StaticText(panel, -1, '英文:', pos=(3, 3))
        rev = wx.StaticText(panel, -1, '中文:', pos=(170, 3))
        rev = wx.StaticText(panel, -1, 'English:', pos=(50, 50))
        rev = wx.StaticText(panel, -1, 'Chinese:', pos=(250, 50))
        rev = wx.StaticText(panel, -1, '记录单词总数:', pos=(50, 29))
        rev.SetForegroundColour("black")
        rev.SetBackgroundColour("")   # 文字背景颜色,不输入为透明
        self.temp_Eng = wx.TextCtrl(panel, -1, "", pos=(40, 0), size=(100, -1))
        self.temp_ZH = wx.TextCtrl(panel, -1, "", pos=(207, 0), size=(100, -1))
        button = wx.Button(panel, wx.ID_ANY, pos=(320, 0), size=(80, 26), label='增加单词')
        button.Bind(wx.EVT_BUTTON, self.get_word)
        button2 = wx.Button(panel, wx.ID_ANY, pos=(0, 200), size=(430, 30), label='查看所有单词')
        button2.Bind(wx.EVT_BUTTON, self.scan_word)
        button3 = wx.Button(panel, wx.ID_ANY, pos=(0, 150), size=(140, 30), label='随机学习')
        button3.Bind(wx.EVT_BUTTON, self.review_word)
        button4 = wx.Button(panel, wx.ID_ANY, pos=(145, 150), size=(140, 30), label='标记')
        button4.Bind(wx.EVT_BUTTON, self.tag_button)
        button5 = wx.Button(panel, wx.ID_ANY, pos=(290, 150), size=(140, 30), label='随机查看标记单词')
        button5.Bind(wx.EVT_BUTTON, self.get_taged_word)
        self.text = wx.TextCtrl(panel, -1, "", pos=(3, 70), size=(170, 50))
        self.text2 = wx.TextCtrl(panel, -1, "", pos=(200, 70), size=(170, 50))
        self.text3 = wx.TextCtrl(panel, -1, "", pos=(0, 230), size=(430, 110), style=wx.TE_MULTILINE)
        self.total_word = wx.TextCtrl(panel, -1, "", pos=(140, 27), size=(40, 25))
        self.ran = None
        self.load_file(self)
        self.get_total_word(self)

    def get_total_word(self, event):
        global num
        self.total_word.AppendText(str(len(num)))

    def write_word2file(self, Eng, ZH):
        f = open(".\dic.txt", 'a+')
        f.write(Eng + ':'+ZH + '\n')
        f.close()

    def get_word(self, event):
        global num
        if self.temp_Eng.GetValue() != None or self.temp_ZH.GetValue() != None:
            self.write_word2file(self.temp_Eng.GetValue(), self.temp_ZH.GetValue())
        self.temp_Eng.Clear()
        self.temp_ZH.Clear()
        self.total_word.Clear()
        self.load_file(self)
        self.total_word.AppendText(str(len(num)))

    def load_file(self, event):
        global mydic
        global num
        f = open("E:\\dic.txt", 'r')
        for line in f.readlines():
            if ':' in line and line[:len(line)-1] not in num:
                mydic[line[:line.index(':')]] = line[line.index(':')+1:len(line)-1]
                num.append(line[:len(line)-1])

    def scan_word(self, event):
        global num
        self.load_file(event)
        self.text.Clear()
        for _ in range(len(num)):
            self.text3.AppendText(num[_]+'\n')


    def review_word(self, event):
        global num
        self.text.Clear()
        self.text2.Clear()
        self.ran = random.randint(0, len(num)-1)
        while self.ran == random.randint(0, len(num)-1):
            self.ran = random.randint(0, len(num) - 1)
        self.text.AppendText(num[self.ran][:num[self.ran].index(':')])
        self.text2.AppendText(num[self.ran][num[self.ran].index(':')+1:])

    def tag_button(self, event):
        if self.ran != None:
            self.tag_word(self.ran)

    def tag_word(self, event):
        global num
        global taged
        if num[self.ran] not in taged:
            taged.append(num[self.ran])
        print(num)

    def get_taged_word(self, event):
        global taged
        self.text.Clear()
        self.text2.Clear()
        _ = random.randint(0, len(taged)-1)
        while _ == random.randint(0, len(taged)-1):
            _ = random.randint(0, len(taged) - 1)
        self.text.AppendText(taged[_][:taged[_].index(':')])
        self.text2.AppendText(taged[_][taged[_].index(':') + 1:])

class MainApp(wx.App):
    def OnInit(self):
        self.frame1 = InfoPanel(None, -1)
        self.frame1.Center()
        self.frame1.Show(True)
        self.SetTopWindow(self.frame1)
        return True


if __name__ == '__main__':
    app = MainApp(0)
    app.MainLoop()

这里写图片描述
更多内容访问omegaxyz.com
网站所有代码采用Apache 2.0授权
网站文章采用知识共享许可协议BY-NC-SA4.0授权
© 2018 • OmegaXYZ-版权所有 转载请注明出处

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值