pyhon之Tkinter编写的ASCII码查询器
偶然间搜到一篇关于tkinter的博客-------原来的python2版------
在这里我把他改成了python3版的
经过测试可以完美运行
python2中的has_key 在python3中被移除 由 in来替换
python2中的iteritem 在python3中 由 item表示

1 #encoding: UTF-8 2 from tkinter import * 3 4 class show: 5 num_info_hash = {} 6 char_info_hash = {} 7 num_char = {} 8 char_num = {} 9 10 def __init__(self): 11 12 self.root = Tk() 13 self.root.title("ASCII码查询") 14 # self.root.geometry('470x320') 15 ######## 16 self.frm = Frame(self.root) 17 # Top 18 Label(self.root, text="ASCII码查询", font=('Arial', 15)).pack() 19 self.load_sys() 20 self.frm = Frame(self.root) 21 # Left 22 self.frm_L = Frame(self.frm) 23 self.frm_LT = Frame(self.frm_L) 24 self.var_char = StringVar() 25 Entry(self.frm_LT, textvariable=self.var_char, width=5, font=('Verdana', 15)).pack(side=RIGHT) 26 Label(self.frm_LT, text='字符', font=('Arial', 12)).pack(side=LEFT) 27 self.frm_LT.pack() 28 29 self.var_L_char = StringVar() 30 self.lb_char = Listbox(self.frm_L, selectmode=BROWSE, listvariable=self.var_L_char, font=('Verdana', 12), 31 width=10, height=13) 32 self.lb_char.bind('<ButtonRelease-1>', self.get_char) 33 for key in self.char_num: 34 self.lb_char.insert(END, key[0]) 35 self.scrl_char = Scrollbar(self.frm_L) 36 self.scrl_char.pack(side=RIGHT, fill=Y) 37 self.lb_char.configure(yscrollcommand=self.scrl_char.set) 38 self.lb_char.pack(side=LEFT, fill=BOTH) 39 self.scrl_char['command'] = self.lb_char.yview 40 41 self.frm_L.pack(side=LEFT) 42 43 # Mid 44 self.frm_M = Frame(self.frm) 45 self.t_show = Text(self.frm_M, width=20, height=5, font=('Verdana', 15)) 46 self.t_show.insert('1.0', '') 47 self.t_show.pack() 48 49 self.frm_MB = Frame(self.frm_M) 50 Button(self.frm_MB, text="清除", command=self.clear, width=6, height=1, 51 font=('Arial', 10)).pack(side=LEFT) 52 Button(self.frm_MB, text="查询", command=self.search, width=6, height=1, 53 font=('Arial', 10)).pack(side=RIGHT) 54 self.frm_MB.pack(side=BOTTOM) 55 56 self.frm_M.pack(side=LEFT) 57 58 # Right 59 self.frm_R = Frame(self.frm) 60 self.frm_RT = Frame(self.frm_R) 61 self.var_int = StringVar() 62 Entry(self.frm_RT, textvariable=self.var_int, width=5, font=('Verdana', 15)).pack(side=LEFT) 63 Label(self.frm_RT, text='十进制', font=('Arial', 12)).pack(side=RIGHT) 64 self.frm_RT.pack() 65 self.var_R_int = StringVar() 66 self.lb_int = Listbox(self.frm_R, selectmode=BROWSE, listvariable=self.var_R_int, font=('Verdana', 12), 67 width=10, height=13) 68 self.lb_int.bind('<ButtonRelease-1>', self.get_int, ) 69 for key in self.num_char: 70 self.lb_int.insert(END, key[0]) 71 self.scrl_int = Scrollbar(self.frm_R) 72 self.scrl_int.pack(side=RIGHT, fill=Y) 73 self.lb_int.configure(yscrollcommand=self.scrl_int.set) 74 self.lb_int.pack(side=LEFT, fill=BOTH) 75 self.scrl_int['command'] = self.lb_int.yview 76 77 self.frm_R.pack(side=LEFT) 78 79 self.frm.pack() 80 ######## 81 82 def get_char(self, event): 83 self.var_char.set('') 84 self.var_int.set('') 85 tmp = self.lb_char.get(self.lb_char.curselection()) 86 self.var_char.set(tmp) 87 88 def get_int(self, event): 89 self.var_int.set('') 90 self.var_char.set('') 91 tmp = self.lb_int.get(self.lb_int.curselection()) 92 self.var_int.set(tmp) 93 94 def clear(self): 95 self.var_char.set('') 96 self.var_int.set('') 97 self.t_show.delete('1.0', '10.0') 98 99 def search(self): 100 self.t_show.delete('1.0', '100.0') 101 tmp_char = self.var_char.get() 102 tmp_int = self.var_int.get() 103 if tmp_char != '': 104 if not (tmp_char in self.char_info_hash): 105 self.t_show.insert('1.0', "您输入的字符不在128个字符之内") 106 else: 107 self.t_show.insert('1.0', '十六进制:'+ '\t' + self.char_info_hash[tmp_char][ 108 2] + '\n') 109 self.t_show.insert('1.0', 110 '十进制:' + '\t' + self.char_info_hash[tmp_char][1] + '\n') 111 self.t_show.insert('1.0', 112 '八进制:' + '\t' + self.char_info_hash[tmp_char][0] + '\n') 113 self.t_show.insert('1.0', '字符:' + '\t' + tmp_char + '\n\n') 114 self.var_char.set('') 115 self.var_int.set('') 116 elif tmp_int != '': 117 if not (tmp_int in self.num_info_hash): 118 self.t_show.insert('1.0', "请输入介于0~127之间的整数") 119 else: 120 self.t_show.insert('1.0', 121 '字符:' + '\t' + self.num_info_hash[tmp_int][2] + '\n') 122 self.t_show.insert('1.0', 123 '十六进制:' + '\t' + self.num_info_hash[tmp_int][1] + '\n') 124 self.t_show.insert('1.0', 125 '八进制:' + '\t' + self.num_info_hash[tmp_int][0] + '\n') 126 self.t_show.insert('1.0', '十进制:' + '\t' + tmp_int + '\n\n') 127 self.var_char.set('') 128 self.var_int.set('') 129 else: 130 self.t_show.insert('1.0', '请选择或输入') 131 132 def load_sys(self): 133 f = open('1_3_2_asc_2') 134 135 for line in f: 136 chunk = line.strip().split(' ') 137 self.num_char[int(chunk[1].strip())] = chunk[3].strip() 138 self.char_num[chunk[3].strip()] = int(chunk[1].strip()) 139 self.num_info_hash[chunk[1].strip()] = [chunk[0].strip(), chunk[2].strip(), chunk[3].strip()] 140 self.char_info_hash[chunk[3].strip()] = [chunk[0].strip(), chunk[1].strip(), chunk[2].strip()] 141 142 self.num_char = sorted(self.num_char.items(), key=lambda asd: asd[0]) 143 self.char_num = sorted(self.char_num.items(), key=lambda asd: asd[1]) 144 145 146 def main(): 147 d = show() 148 mainloop() 149 150 151 if __name__ == "__main__": 152 main() 153 154 '''http://www.cnblogs.com/kaituorensheng/p/3287652.html'''
ascii文件
0 0 00 nul 1 1 01 soh 2 2 02 stx 3 3 03 etx 4 4 04 eot 5 5 05 enq 6 6 06 ack 7 7 07 bel 10 8 08 bs 11 9 09 ht 12 10 0a nl 13 11 0b vt 14 12 0c ff 15 13 0d er 16 14 0e so 17 15 0f si 20 16 10 dle 21 17 11 dc1 22 18 12 dc2 23 19 13 dc3 24 20 14 dc4 25 21 15 nak 26 22 16 syn 27 23 17 etb 30 24 18 can 31 25 19 em 32 26 1a sub 33 27 1b esc 34 28 1c fs 35 29 1d gs 36 30 1e re 37 31 1f us 40 32 20 sp 41 33 21 ! 42 34 22 " 43 35 23 # 44 36 24 $ 45 37 25 % 46 38 26 & 47 39 27 ` 50 40 28 ( 51 41 29 ) 52 42 2a * 53 43 2b + 54 44 2c , 55 45 2d - 56 46 2e . 57 47 2f / 60 48 30 0 61 49 31 1 62 50 32 2 63 51 33 3 64 52 34 4 65 53 35 5 66 54 36 6 67 55 37 7 70 56 38 8 71 57 39 9 72 58 3a : 73 59 3b ; 74 60 3c < 75 61 3d = 76 62 3e > 77 63 3f ? 100 64 40 @ 101 65 41 A 102 66 42 B 103 67 43 C 104 68 44 D 105 69 45 E 106 70 46 F 107 71 47 G 110 72 48 H 111 73 49 I 112 74 4a J 113 75 4b K 114 76 4c L 115 77 4d M 116 78 4e N 117 79 4f O 120 80 50 P 121 81 51 Q 122 82 52 R 123 83 53 S 124 84 54 T 125 85 55 U 126 86 56 V 127 87 57 W 130 88 58 X 131 89 59 Y 132 90 5a Z 133 91 5b [ 134 92 5c \ 135 93 5d ] 136 94 5e ^ 137 95 5f _ 140 96 60 ' 141 97 61 a 142 98 62 b 143 99 63 c 144 100 64 d 145 101 65 e 146 102 66 f 147 103 67 g 150 104 68 h 151 105 69 i 152 106 6a j 153 107 6b k 154 108 6c l 155 109 6d m 156 110 6e n 157 111 6f o 160 112 70 p 161 113 71 q 162 114 72 r 163 115 73 s 164 116 74 t 165 117 75 u 166 118 76 v 167 119 77 w 170 120 78 x 171 121 79 y 172 122 7a z 173 123 7b { 174 124 7c | 175 125 7d } 176 126 7e ~ 177 127 7f del

浙公网安备 33010602011771号