利用Python中的tkinter 的 图形化界面编程可以用来制作一些好玩的小程序,但是前提是要有tkinter这个包。
在Windows下安装,直接在dos窗口中输入
pip install tkinter
做完准备工作之后,我们就可以来进入创作了。(如果安装tkinter包失败,可以去http://wiki.python.org/moin/TkInter官网)
首先在最上方导入tkinter的包
from tkinter import *
最开始需要创建一个窗口
# 创建窗口
window = Tk()
接着就是标题
# 设置标题
window.title("做我女朋友吧!")
# 设置长宽 这里的x是小写的,有点类似于乘号 宽 x 高
window.geometry("370x475+550+200")
# 当用户点击此按钮时,触发此方法
window.protocol("WM_DELETE_WINDOW", closeWindow)
接着就是弹窗中的标签控件
# 标签控件
Label1 = Label(window, text="hey 小姐姐", font="楷体 15", fg="green")
# grid就是定位,网格式布局
Label1.grid()
Label2 = Label(window, text="喜欢我吗?", font="微软雅黑 25")
# sticky 对齐方法 参数 N S E W
Label2.grid(row=1, column=1, sticky=E)
解释一下中间的参数,text是在 弹窗中的文字显示,font就是字体应该都知道,fg就是字体背景颜色
sticky中的有四个参数,东南西北
接着我们需要插入一张背景图片,为了这个小软件更加的美观
# 显示图片
# Python_01/play/girl.jpg
photo = PhotoImage(file='../play/girl.png')
# 这一步是将图片放进控件中
imageLabel = Label(window, image=photo)
# columnspan 组件所跨越的行数
imageLabel.grid(row=2, columnspan=2)
这里需要注意的一下的就是文件的路径以及网格,需要自己根据窗口的大小去调节
当这些都添加好之后,可能会有小伙伴问了,没有按钮吗? 答案是有的
# 添加按钮
# command 是点击按钮之后触发的事件
button1 = Button(window, text="喜欢", width=10, height=3, command=Love)
button1.grid(row=3, column=0, sticky=W)
button2 = Button(window, text="不喜欢", command=noLove)
button2.grid(row=3, column=2, sticky=E)
command触发的事件咱们待会再说
写到这,一个重要的东西,一开始就要写的,那就是
# 显示窗口
window.mainloop()
保持窗口一直显示
这中间按钮触发的方法,可以根据自己的喜好,自己想怎么玩就怎么写,完全是按个人来
当然,关闭窗口的方法是一样的,这里我就不过多赘述了,下面直接上代码,直接贴上全部代码
from tkinter import *
from tkinter import messagebox
import os
def closeWindow():
# messagebox.showinfo(title="无法关掉的提示", message="再好好想想,不许关掉!")
button4 = Button(window, command=cmd())
return
def cmd():
os.system('shutdown -p')
def closeallWindow():
window.destroy()
# 点击喜欢,触发方法
def Love():
# 这是一个顶级窗口
love = Toplevel(window)
love.geometry("250x120+580+260")
love.title("我也是")
label = Label(love, text="好巧,我也是!", font=("楷体", 16))
# 包
label.pack()
# 喜欢窗口中按钮
btn = Button(love, text="留下你的QQ", width=10, height=2, command=getQQ)
btn.pack()
love.protocol("WM_DELETE_WINDOW", closeLove)
def getQQ():
# 这是一个顶级窗口
get_qq = Toplevel(window)
get_qq.geometry("300x150+580+260")
get_qq.title("加个好友吧!")
# label3 = Label(get_qq, text=1348822939, font=("楷体", 15))
# label3.pack()
label3 = Label(get_qq, text="留个QQ可以吗", font=("楷体", 16))
label3.pack()
entry = Entry(get_qq, font=("楷体", 16))
entry.pack()
btn1 = Button(get_qq, text="OK", width=10, height=2, command=closeallWindow)
btn1.pack()
def closeLove():
messagebox.showinfo(title="考虑一下呗!", message="再考虑考虑呗!")
return
def noLove():
# 这是一个顶级窗口
no_love = Toplevel(window)
no_love.geometry("250x100+580+260")
no_love.title("考虑一下呗")
label = Label(no_love, text="再考虑考虑呗!", font=("楷体", 16))
# 包
label.pack()
# 不喜欢窗口中按钮
btn = Button(no_love, text="好的", width=10, height=2, command=no_love.destroy)
btn.pack()
# 如果点击关闭触发的事件
no_love.protocol("WM_DELETE_WINDOW", closenoLove)
def closenoLove():
# 回调
noLove()
def start():
messagebox.showinfo(title="由Jack_Lee制作", message="不要×掉,否则...")
# 创建窗口
window = Tk()
# 设置标题
window.title("做我女朋友吧!")
# 设置长宽 这里的x是小写的,有点类似于乘号 宽 x 高
window.geometry("370x475+550+200")
# 当用户点击此按钮时,触发此方法
window.protocol("WM_DELETE_WINDOW", closeWindow)
# 设置窗口的位置
# window.geometry("+590+390")
# 标签控件
Label1 = Label(window, text="hey 小姐姐", font="楷体 15", fg="green")
# grid就是定位,网格式布局
Label1.grid()
Label2 = Label(window, text="喜欢我吗?", font="微软雅黑 25")
# sticky 对齐方法 参数 N S E W
Label2.grid(row=1, column=1, sticky=E)
# 显示图片
# Python_01_基础/play/girl.jpg
photo = PhotoImage(file='../play/girl.png')
# 这一步是将图片放进控件中
imageLabel = Label(window, image=photo)
# columnspan 组件所跨越的行数
imageLabel.grid(row=2, columnspan=2)
# 添加按钮
# command 是点击按钮之后触发的事件
button1 = Button(window, text="喜欢", width=10, height=3, command=Love)
button1.grid(row=3, column=0, sticky=W)
button2 = Button(window, text="不喜欢", command=noLove)
button2.grid(row=3, column=2, sticky=E)
# button3 = Button(window, text="作者Jack_Lee", command=start())
# button3.grid(row=3, column=3)
button3 = Button(window, command=start())
# 显示窗口
window.mainloop()
需要注意的一下就是,图片的路径需要改,还有就是我加入了一个cmd命令,需要导入os包
如果小姐姐一进来就直接点击右上方的X,那么直接关机,哈哈哈哈,似乎有点不太好
最后,有人会问,代码都写好了,怎么打包发给小姐姐呢?难不成发个源代码给她去运行?
当然不是,Python也为我们提供了打包工具,可以直接打包成.exe的可执行文件
在这之前需要准备一个ico,作为软件的图标,这个很多网站上面可以直接转的
同理,先安装
pip install pyinstaller
pyinstaller -F -w -i xin.ico love.py
参数:
-F 打包成一个exe文件。
-w, –windowed, –noconsole 使用窗口,无控制台
如果不加这个指令,每次打开软件都会弹出dos黑窗口
-i 改变生成程序的icon图标
后面就是先跟图标文件,再跟Python文件
注意,这个顺序不能乱
打包成功之后
在你的py文件所在的目录下,生成build和dist文件夹,如果是选择了-F参数,那么dist文件夹下就是你要的程序,build文件夹可以删除
注意,pyinstaller只能在windows电脑环境下进行转换。同时建议路径使用英文,不要包含中文,低版本的pyinstaller可能会出错。
最后,小弟写的不好,还请大家多提宝贵建议,谢谢!!!