Python做GUI桌面程序有好多框架,由于主要是做离线项目,所以用Python自带的tkinter来实现这个功能
Tkinter → tkinter
tkMessageBox → tkinter.messagebox:用于显示在应用程序的消息框
tkColorChooser → tkinter.colorchooser
tkFileDialog → tkinter.filedialog:弹出文件选择框
tkCommonDialog → tkinter.commondialog
tkSimpleDialog → tkinter.simpledialog
tkFont → tkinter.font
Tkdnd → tkinter.dnd
ScrolledText → tkinter.scrolledtext
Tix → tkinter.tix
ttk → tkinter.ttk
1、import tkinter
import tkinter
import tkinter.messagebox;#这个是弹出框需要的
from turtle import color, right, width
tk = tkinter.Tk();
tk.title("窗体标题");#窗体的标题
tk.geometry("500x500")#窗体的长宽 X是英文字母的x,不是符号*
tk.geometry("+500+300")#窗体的距离左上的距离,xy坐标
#tk.winfo_screenheight #屏幕的高
#tk.winfo_screenwidth #屏幕的宽
lbl = tkinter.Label(tk,text= "labelText:",bg="red");#tk是父窗体,text是label的标题,bg背景色
#lbl.grid(row=1000,column=100);#不知道干什么用的
####对齐方式
lbl.pack(anchor='e');#字体的对齐方式 n:靠上 w靠左 s靠下 e靠右 或者组合使用,,如nw 左上方对齐
###坐标
lbl.place(x=20,y=30);# xy坐标
#lbl.place(width=300,height=300);#宽高 一般不设置,取字体的长度
txt = tkinter.Entry(tk);
txt.place(x=150,y=30)
lbl2 = tkinter.Label(tk,text="labelText2:");
lbl2.place(x=20,y=80);
txt2 = tkinter.Entry(tk);
txt2.place(x=150,y=80);
def Hello():
txt1Value = txt.get();
txt2Value = txt.get();
tkinter.messagebox.showinfo("弹出框的标题","输入框1的值:"+txt1Value+"输入框2的值:"+txt2Value);
btn = tkinter.Button(tk,text="按钮事件",command=Hello)
btn.place(x=150,y=130);
tk.mainloop();
2、打包成exe
1)下载PyInsttaller
从下面链接下载installpyinstaller · PyPIhttps://pypi.org/project/pyinstaller/#files 里面显示的是最新版本,我一般不会用最新版本,在该页面的RealseHistory里找到历史版本,下载4.5,点4.5后跳转到4.5页面,默认页面是描述信息,点DownFile,下载tar.gz文件。
2)下载完成解压后,如E:\Tool\python扩展包\pyinstaller-4.5\pyinstaller-4.5
python setup.py install 安装,安装过程中可能出现提示
build wheel require wheel ,
从上面的PyPI · The Python Package Index 搜索框里输入wheel,下载到本地然后解压缩
python setup.py install 安装wheel,然后再运行python,setup.py install 安装pyinstaller
3)安装过程中有时候提示ZIP does not support timestamps before 1980出现这个问题是因为tar.gz文件里有些文件没有修改日期,默认1970,可以百度下怎么修改文件日期。
4)生成exe
cmd 命令 pyinstaller -F 路径.py,完成后,在disk目录下找到exe文件,但是这时候生成的exe运行的时候会生成一个黑框。解决这个问题,将py改为pyw就行了。如
pyinstaller -F 路径.pyw,这时就没有弹框了。