主程序代码:morse_query.py

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

__author__ = ''
__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__ = ''
__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)

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

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

    摩尔斯电码,在早期的"生产斗争"生活中,扮演了很重要的角色,作为一种信息编码标准,摩尔斯电码拥有其他编码方案无法超越的长久生命.摩尔斯电码在海事通讯中被作为国际标准一直使用到199 ...

  2. 算法提高 9-3摩尔斯电码 map

    算法提高 9-3摩尔斯电码 时间限制:1.0s   内存限制:256.0MB     问题描述 摩尔斯电码破译.类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文.请不要使用"z ...

  3. 算法笔记_085:蓝桥杯练习 9-3摩尔斯电码(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 摩尔斯电码破译.类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文.请不要使用"zylib.h",只能使用 ...

  4. Java实现 蓝桥杯 算法提高 摩尔斯电码

    算法提高 9-3摩尔斯电码 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 摩尔斯电码破译.类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文.请不要使用"zy ...

  5. 蓝桥杯 算法提高 9-3摩尔斯电码 _c++ Map容器用法

    //****|*|*-**|*-**|--- #include <iostream> #include <map> #include <vector> #inclu ...

  6. [CTF]摩斯电码

    摩尔斯电码 -----------转载 https://morse.supfree.net/ 摩尔斯电码定义了包括:英文字母A-Z(无大小写区分)十进制数字0-9,以及"?"&qu ...

  7. python实现的摩斯电码解码\编码器

    代码地址如下:http://www.demodashi.com/demo/14743.html 详细说明: 现在这年头谍战片.警匪片动不动就用摩斯密码来传递信息,一方面可以用来耍帅,另外一方面好像不插 ...

  8. 【转】elasticsearch的查询器query与过滤器filter的区别

    很多刚学elasticsearch的人对于查询方面很是苦恼,说实话es的查询语法真心不简单-  当然你如果入门之后,会发现elasticsearch的rest api设计是多么有意思. 说正题,ela ...

  9. Python学习笔记——天气查询代码

    天气查询代码1 # 此程序无法运行,因为中国天气网的api接口被关闭了 import urllib.request import json import pickle #建立城市字典 pickle_f ...

随机推荐

  1. 配置Apache2 管理 SVN

    软件环境:CentOS-7-x86_64 1.安装 mod_dav_svn   模块 2.在Apache2下增加管理配置,如: cd /etc/httpd/conf.d vim subversion. ...

  2. U - stl 的 优先队列 Ⅰ

    Description Given m sequences, each contains n non-negative integer. Now we may select one number fr ...

  3. 求double类型的n次方

    剑指offer系列面试题 package com.study; /* * 数值的整数次方 * 要求:实现函数 double Power(double base, int exponent) 求base ...

  4. AngularJS中如何使用trigger报错$digest already in progress

    今天在使用trigger事件碰到问题: 例如我有两个按钮,button1和button2,在button2绑定了ng-click事件,现在想点击button1从而触发button2的ng-click事 ...

  5. 通过Wmi实现Hyper-V远程管理(一)

    最近公司需要做Hyper-V的远程管理,在现有产品基础上扩展对Hyper V的管理,实现远程开关机.远程开启虚拟机会话,其他内容可查看MSDN中有对Hyper-V的描述和相关实例代码. Wmi操作hy ...

  6. struts2配置文件struts.xml的简介

    本文在于总结,深入研究有别人写的很好了,也没必要再去写,将在本文后面附上他们的文章地址: 一.struts2的执行过程: 二.struts2的配置文件struts.xml 下面是其三大部分includ ...

  7. QT:多线程HTTP下载文件

    这里的线程是指下载的通道(和操作系统中的线程不一样),一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器 ...

  8. C语言的本质(19)——预处理之一:宏定义

    我们在写代码时已多次使用过以"#"号开头的预处理命令.如包含命令#include,宏定义命令#define等.在源程序中这些命令都放在函数之外,而且一般都放在源文件的前面,它们称为 ...

  9. 非自定义和自定义Dialog的介绍!!!

    一.非自定义Dialog的几种形式介绍 转自:http://www.kwstu.com/ArticleView/kwstu_20139682354515 前言 对话框对于应用也是必不可少的一个组件,在 ...

  10. 新手学习.net编程计划-1

    .NET是一个庞大的学习体系,对于新手来说会感觉无从下手.学习知识必须从入门的基础学起,才能更好地掌握.学习.net也是如此,最基础的莫过于了解.net平台,以及掌握.net的基础语法C#. 本计划是 ...