前言
目标:可视化界面实现进制间转换,并形成可执行文件;
实现平台:Pycharm , Python3.7;
第三方库:PySimpleGUI , re;
主要知识:
利用PySimpleGUI实现界面显示;
python.py文件如何转化为可执行文件.exe
一、数据类型转换工具展示
二、实现步骤
1.实现代码
import PySimpleGUI as sg
import re
#实现布局
layout = [[]]
layout.append([sg.Text(" "*200)])
layout.append([sg.Text("选择您想进行的转换类型:",font = (20)),
sg.Combo(values=("hex-ascii","hex-bin","bin-hex","hex-dec","dec-hex"),default_value="hex-ascii",readonly=True,font = (20),k="-COMBO-"), #k参数即key,它表示当前控件Combo目前的值;是该窗口元素的身份
sg.Text(" "*20),
sg.Button("确认转换",button_color="pink")
])
layout.append([sg.Text(" "*200)])
layout.append([sg.Text("转换前:",font = (20)),sg.Text("",key = "-trn_bef-",font = (30),text_color="yellow"),
sg.Text(" "*90),
sg.Text("转换后:",font = (20)),sg.Text("",key = "-trn_aft-",font = (30),text_color="yellow"),
])
layout.append([sg.MLine("/* 分隔符请使用空格或换行符\\n */",key='-trn_bef_text-',font=('宋体',15),size=(35, 20)),sg.Text(' ' *20 ),
sg.Multiline(key = '-trn_aft_text-',font=('宋体',15),size=(30, 20),autoscroll=True)])
layout.append([sg.Text(" "*200)])
window = sg.Window("数据类型转换工具",layout) #以layout为布局创建窗体
while True:
event,values = window.read() #监听事件
if event == sg.WIN_CLOSED:
break
elif event == "确认转换" or event == '\r':
c = ""
'''
获取转换前和转换后的数据类型,并显示在窗口上
'''
cur_type = window["-COMBO-"].get()
list = cur_type.split("-")
trn_bef = list[0]
trn_aft = list[1]
window["-trn_bef-"].update(trn_bef)
window["-trn_aft-"].update(trn_aft)
'''
处理数据
'''
bef_data = window["-trn_bef_text-"].get()
bef_data_list = re.split("[ ,\n]",bef_data) #以" " 或 换行符作为分隔符
print(bef_data_list)
for i in bef_data_list:
if i == " " or i == "\n":
continue
else:
if cur_type == "hex-ascii":
reshex_ascii = chr(int(i, 16)) + " "
c = c + reshex_ascii
elif cur_type == "hex-bin":
reshex_bin = bin(int(i, 16))
lacklen = 8 - len(reshex_bin[2:])
reshex_bin = "0" * lacklen + reshex_bin[2:] + " "
c = c + reshex_bin
elif cur_type == "bin-hex":
resbin_hex = hex(int(i, 2))
c = c + resbin_hex[2:].title()+ " "
elif cur_type == "hex-dec":
reshex_dec = str(int(i, 16))+ " "
c = str(c) + str(reshex_dec)
elif cur_type == "dec-hex":
reshex_dec = hex(int(i))
lacklen = 2 - len(reshex_dec[2:])
reshex_dec = "0" * lacklen + reshex_dec[2:]+ " "
c = c + reshex_dec
else:
c = "Please choose transfer type!"
window["-trn_aft_text-"].Update(c) #将值名为"-trn_aft_text-"的窗口内容进行更新
else:
continue
window.close()
2.执行结果
3…py文件转.exe文件
-
安装pyinstaller包;控制台Terminal输入:pip install pyinstaller;
-
Terminal输入:pyinstaller -F -w main.py;
即可生成可执行文件.exe;
生成的可执行文件放在同目录dist下;
其中-F(注意大写)是将所有库文件打包成一个可执行文件,windows下是exe;
-w是禁止弹出黑色控制台窗口。 -
其他参数
-
拓展:为.exe添加.icon图标
Terminal输入: pyinstaller -F -w -i G:\Pycharm\guidesign\instance.ico main.py
注意:png 格式直接将后缀改成ico会报错,无法成功生成;
附:图片转.ico文件网站:PNG转换成ICO
免费的ico网站:iconfont
ICONFINDER