python-摩尔斯电码查询器

主程序代码:morse_query.py

#-*- coding: UTF-8 -*-

__author__ = ‘007‘
__date__ = ‘2016/4/5‘   

from Tkinter import *

class morse2char():
    char_morse = {}
    morse_char = {}
    morse_num = {}
    char_num = {}
    def __init__(self):
        self.root = Tk()
        self.root.title("MORSE码查询器")
        self.frm = Frame(self.root)
        #top
        Label(self.root,text="MORSE码查询器", bg="green", font=(‘Arial‘,15)).pack()
        self.morse_table()
        #left
        self.frm_L = Frame(self.frm)
        self.frm_LT = Frame(self.frm_L)
        self.var_char = StringVar()
        Entry(self.frm_LT, textvariable=self.var_char, width=5, font=(‘Arial‘,15)).pack(side=RIGHT)
        Label(self.frm_LT, text="字符", bg="yellow", font=(‘Arial‘,12)).pack(side=LEFT)
        self.frm_LT.pack(side=TOP)
        self.var_L_char = StringVar()
        self.lb_char = Listbox(self.frm_L, selectmode=BROWSE, listvariable=self.var_L_char, font =(‘Verdana‘,12), width=6, height=13)
        self.lb_char.bind(‘<ButtonRelease-1>‘, self.get_char)
        for key in self.char_num:
            self.lb_char.insert(END, key[0])
        self.scrl_char = Scrollbar(self.frm_L)
        self.scrl_char.pack(side=RIGHT, fill=Y)
        self.lb_char.configure(yscrollcommand = self.scrl_char.set)
        self.lb_char.pack(side=LEFT, fill=BOTH)
        self.scrl_char[‘command‘] = self.lb_char.yview
        self.frm_L.pack(side=LEFT)
        #mid
        self.frm_M = Frame(self.frm)
        self.t_show = Text(self.frm_M, width=20, height=5, font =(‘Verdana‘,15))
        self.t_show.insert(‘1.0‘, ‘‘)
        self.t_show.pack()
        self.frm_MB = Frame(self.frm_M)
        Button(self.frm_MB, text="清除", command=self.clear, width=6, height=1, bd=3, font=(‘Arial‘, 10)).pack(side=LEFT)
        Button(self.frm_MB, text="查询", command=self.search, width=6, height=1, bd=3, font=(‘Arial‘, 10)).pack(side=RIGHT)
        self.frm_MB.pack(side=BOTTOM)
        self.frm_M.pack(side=LEFT)
        #right
        self.frm_R = Frame(self.frm)
        self.frm_RT = Frame(self.frm_R)
        self.var_morse = StringVar()
        Entry(self.frm_RT, textvariable=self.var_morse, width=5, font=(‘Arial‘,15)).pack(side=LEFT)
        Label(self.frm_RT, text="morse码", bg="pink", font=(‘Arial‘,12)).pack(side=RIGHT)
        self.frm_RT.pack(side=TOP)
        self.var_R_morse = StringVar()
        self.lb_morse = Listbox(self.frm_R, selectmode=BROWSE, listvariable=self.var_R_morse, font=(‘Verdana‘,12), width=10, height=13)
        self.lb_morse.bind(‘<ButtonRelease-1>‘,self.get_morse)
        for key in self.morse_num:
            self.lb_morse.insert(END,key[0])
        self.scrl_morse = Scrollbar(self.frm_R)
        self.scrl_morse.pack(side=RIGHT,fill=Y)
        self.lb_morse.configure(yscrollcommand=self.scrl_morse.set)
        self.lb_morse.pack(side=LEFT,fill=BOTH)
        self.scrl_morse[‘command‘] = self.lb_morse.yview
        self.frm_R.pack(side=LEFT)
        self.frm.pack()

    def get_char(self, event):
        self.var_char.set(‘‘)
        self.var_morse.set(‘‘)
        tmp = self.lb_char.get(self.lb_char.curselection())
        self.var_char.set(tmp)

    def get_morse(self, event):
        self.var_morse.set(‘‘)
        self.var_char.set(‘‘)
        tmp = self.lb_morse.get(self.lb_morse.curselection())
        self.var_morse.set(tmp)
    def clear(self):
        self.var_char.set(‘‘)
        self.var_morse.set(‘‘)
        self.t_show.delete(‘1.0‘,‘10.0‘)
    def search(self):
        self.t_show.delete(‘1.0‘,‘10.0‘)
        tmp_char = self.var_char.get().upper()
        tmp_morse = self.var_morse.get()
        if tmp_char != ‘‘:
            if not self.char_morse.has_key(tmp_char):
                self.t_show.insert(‘1.0‘,‘您输入的字符不在查询范围内!‘)
            else:
                self.t_show.insert(‘1.0‘,‘morse码:‘ + ‘\t‘ + self.char_morse[tmp_char][0:] + ‘\n‘)
        elif tmp_morse != ‘‘:
            if not self.morse_char.has_key(tmp_morse):
                self.t_show.insert(‘1.0‘,‘您输入的morse码不在查询范围内‘)
            else:
                self.t_show.insert(‘1.0‘,‘字符:‘ + ‘\t‘ + self.morse_char[tmp_morse][0] + ‘\n‘)
        else:
            self.t_show.insert(‘1.0‘,"请选择或输入")
        self.var_char.set(‘‘)
        self.var_morse.set(‘‘)
    def morse_table(self):
        f = file(‘./morse_query‘)
        for line in f:
            chunk = line.strip().split(‘  ‘)
            #print chunk
            self.char_morse[chunk[0]] = chunk[1]
            self.morse_char[chunk[1]] = chunk[0]

        self.char_num = sorted(self.char_morse.iteritems(), key = lambda asd:asd[1])
        self.morse_num = sorted(self.morse_char.iteritems(), key = lambda asd:asd[0])

def main():
    m = morse2char()
    mainloop()

if __name__ == "__main__":
    main()

文件:morse_query

A  .-
B  -...
C  -.-.
D  -..
E  .
F  ..-.
G  --.
H  ....
I  ..
J  .---
K  -.-
L  .-..
M  --
N  -.
O  ---
P  .--.
Q  --.-
R  .-.
S  ...
T  -
U  ..-
V  ...-
W  .--
X  -..-
Y  -.--
Z  --..
1  .----
2  ..---
3  ...--
4  ....-
5  .....
6  -....
7  --...
8  ---..
9  ----.
0  -----
.  .-.-.-
:  ---...
,  --..--
;  -.-.-.
?  ..--..
=  -...-
‘  .----.
/  -..-.
!  -.-.--
-  -....-
_  ..--.-
"  .-..-.
(  -.--.
)  -.--.-
$  ...-..-
&  ....
@  .--.-.

py转换为exe:setup_morse_q.py

#-*- coding: UTF-8 -*-

__author__ = ‘007‘
__date__ = ‘2016/4/7‘

from distutils.core import setup
import py2exe

setup(windows=[‘morse_query.py‘],options={"py2exe":{"dll_excludes":["MSVCP90.dll"]}})

morse_query.exe

下载: (提取码:6216)

时间: 2024-10-18 21:00:25

python-摩尔斯电码查询器的相关文章

摩尔斯电码(Morse Code)Csharp实现

摩尔斯电码,在早期的"生产斗争"生活中,扮演了很重要的角色,作为一种信息编码标准,摩尔斯电码拥有其他编码方案无法超越的长久生命.摩尔斯电码在海事通讯中被作为国际标准一直使用到1999年.不过随着科技的发展,最终还是倒在了历史的车轮下(PS:等等,为何这么熟悉??观众:好一片根正苗红的*文啊,啊啊啊啊),1997年,当法国海军停止使用摩尔斯电码时,发送的最后一条消息是:“所有人注意,这是我们在永远沉寂之前最后的一声呐喊!”. 任何关于Morse code可拓展的咨询,请移步维基百科:摩尔

摩尔斯电码 对照 英文 字母

".-", a "-...",b "-.-.",c "-..",d ".",e "..-.",f "--.",g "....",h "..",i ".---",j "-.-",k ".-..",l "--",m "-.",n &q

【摩斯电码】我是如何通过一张小纸条渗透进了妹子的心

[摩斯电码]我是如何通过一张小纸条渗透进了妹子的心 本文来源:i春秋社区-分享你的技术,为安全加点温度 文章前介:主角:gh0stkey本人(化名:key).国外留学学生(妹子)导火线:带有印子的纸条文章导读:一张神秘的纸条出现在主角的生活之中,却让主角颠覆了"屌丝"的身份. 纸条模样还原: 因为当时没想到要拍照,就借下网图. 内容简介:事情是这样的,在一个阳光明媚的早晨,Key开始了老套的生活方式(洗脸刷牙..)上学去了....中间省略上课不听讲的趣事.只听"叮铃铃&quo

八、Python Django数据库添加查询

Python Django数据库添加查询 对数据进行操作 一.创建记录 # pwd /root/csvt03 # ipython manage.py shell In [1]: from blog.models import Employee #(第一种方法) In [2]: Employee Out[2]: blog.models.Employee In [3]: emp = Employee() In [4]: emp.name = 'Alen' In [5]: emp.save() #(第

leecode [唯一摩尔斯密码词]

今天看到leecode [唯一摩尔斯密码词]比较有趣,但发现网页上一处错误,如下: 根据原文定义"cab"对应的摩斯密码应该是"-.-..--...",已经联系leecode人员改正. 具体步骤简单分解为:1.将26个字母及对应的摩斯密码做成字典表2.以单词为单位去查字典表,将字母对应摩斯密码首尾连接,返回单词对应的莫斯字符串3.自定义一个空的字典morse_words = {},对给定的单词数组遍历调用第2步,但遍历中需要判断单词对应的莫斯字符串是否在morse_

10 行 Python 代码实现模糊查询/智能提示

10 行 Python 代码实现模糊查询/智能提示 1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列表供用户选择. 样例如下: Vim (Ctrl-P) Sublime Text (Cmd-P) '模糊匹配'这是一个极为有用的特性,同时也非常易于实现. 2.问题分析: 我们有一堆字符串(文件名)集合,我们根据用户的输入不断进行过滤,用户的输入可能是字符串的一部分.我们就以下面的

python用正则表达式怎么查询unicode码字符

import re data = open('a.txt') fh = open('b.txt', 'w') """Search the string begining with '['""" p = re.compile(r'\s*[\u3010]') for each_d in data: if re.match('\s*3\d{4}', each_d): each_d = each_d.strip() print(each_d + ': '

css3 media媒体查询器用法总结 兼容ie8以下的方法

总结一下响应式设计的核心CSS技术Media(媒体查询器)的用法. http://www.360doc.com/content/14/0704/06/10734150_391862769.shtml 准备工作1:设置Meta标签 首先我们在使用Media的时候需要先设置下面这段代码,来兼容移动设备的展示效果: 这段代码的几个参数解释: width = device-width:宽度等于当前设备的宽度 initial-scale:初始的缩放比例(默认设置为1.0) minimum-scale:允许

Python实现多线程HTTP下载器

本文将介绍使用Python编写多线程HTTP下载器,并生成.exe可执行文件. 环境:windows/Linux + Python2.7.x 单线程 在介绍多线程之前首先介绍单线程.编写单线程的思路为: 解析url: 连接web服务器: 构造http请求包: 下载文件. 接下来通过代码进行说明. 解析url 通过用户输入url进行解析.如果解析的路径为空,则赋值为'/':如果端口号为空,则赋值为"80":下载文件的文件名可根据用户的意愿进行更改(输入'y'表示更改,输入其它表示不需要更