-
引入
1.thinter是Python的标准GUI库,窗口的功能必须需要import tkinter。所以窗口程序的代码结构如下:
import tkinter
top = tkinter.Tk()#创建Tk类的对象
# 进入消息循环
top.mainloop()#调用mainloop()方法,就会弹出窗口
-
窗口显示和属性
1.窗口标题 top.title('编辑文字')
2.窗口大小(长x宽) top.geometry('500x300')
3.窗口颜色 top.config(bg='blanched almond')
4.更改窗口出现的位置 top.geometry('500x300+x+y')-----x,y代表窗口水平和垂直平移的距离
5.如何设置窗口出现在屏幕中间?即x,y如何确定?
x=屏幕宽度/2-窗口宽度/2
y=屏幕高度/2-窗口高度/2
6.如何获得屏幕的宽度和高度?
sw=root.winfo_screenwidth()
sh=root.winfo_screenheight()
x = (sw-ww) // 2 #窗口水平位置
y = (sh-wh) / /2 #窗口垂直位置
-
标签显示
1.标签:就是提示型的文字,用tkinter.Label类
2.语法:
luname = tkinter.Label(top, text='用户名:', bg='green',font=('楷体', 12), width=30, height=2,pady=15,padx=20)
#创建标签对象
#里面的属性,有些可加可不加
'''
属性说明:
1.top:代表窗口的对象。表示标签在哪个窗口下。----可加可不加
2.text:标签文字
3.bg:背景颜色
4.font:字体
5.width,height:标签的宽度和高度
6.pady:标签距离上沿的距离
7.pady:标签距离左边沿的距离
'''
luname.grid(row=0,column=0)
#标签显示在窗口的布局方式,即网格式
-
单行文本显示
1.用tkinter.Entry类
2.语法:
euname = tkinter.Entry(top, font=('楷体', 12),width=20)
#没有高度,左边距,上边距的属性---因为它会紧贴之前设置的标签
euname = tkinter.Entry(top, show='*',width=20)
#设置的是密码框
euname.grid(row=0,column=1)
#处于第一行第二列
-
按钮
1.用tkinter.Button类
2.语法:
b = tkinter.Button(top, text='选择', font=('楷体', 12), width=10,
height=1, command=choose)
#command代表点这个按钮,要执行的函数
b.grid(row=0,column=2)
-
对话框-信息提示
1.需要子模块messagebox,需要引入
import tkinter.messagebox
2.弹出对话框:上述command对应是choose函数,定义choose函数中,加入messbox的信息
def choose():
tkinter.messagebox.showinfo('选择提示','文件已选择')
-
文件选择框
1.需要子模块filedialog,需要引入
import tkinter.filedialog
2.语法:
def choose():
file_path=tkinter.filedialog.askopenfilename(title='选择EXCEL文件')
#文件的路径付给了变量file_path,下一步需要件路径付给单行文本框
-
单行文本框的常见操作
1.向单行文本框插入数据:
eexcel.insert('end',file_path)
#end代表结尾,如果向文本框中多次插入数据,则是在上一次的结果加
#eexcel是文本框的对象
2.获得单行文本框的数据:
strname=eexcel.get()
3.删除文本框的数据:
eexcel.delete(0,'end')
#0代表从开头开始删除
-
总结
窗口设置-标签设置-单行文本框设置-按钮设置-按钮的函数功能设置
1.作业1:完成文件选择框软件的制作,要求点击选择按钮,弹出文件选择框,将选择的文件填入到文本框中,重新点击选择按钮要清空文本框的内容,将新的文件重新填入到文本框中,点击保存按钮时判断文本框内容为空时弹出报错消息框,判断文本框内容不是Excel文件时弹出报错消息框,选择正确时弹出“文件选择成功”消息框
import tkinter
import tkinter.messagebox
import tkinter.filedialog
root=tkinter.Tk()
root.title('EXCEL选择')
sw=root.winfo_screenwidth()
sh=root.winfo_screenheight()
x=(sw-500)//2
y=(sh-300)//2
root.geometry('500x300+%d+%d'%(x,y))
lbltitle=tkinter.Label(root,text='选择EXCEL文件:',font=('楷体',12),width=15,height=2,pady=20,padx=10)
lbltitle.grid(row=0,column=0)
etitle=tkinter.Entry(font=('楷体',12),width=20)
etitle.grid(row=0,column=1)
def choose():
etitle.delete(0,'end')
file_path=tkinter.filedialog.askopenfilename(title='选择EXCEL文件')
etitle.insert('end',file_path)
btn=tkinter.Button(text='选择',font=('楷体',12),width=8,command=choose)
btn.grid(row=0,column=2)
def save():
path_name=str(etitle.get())
if path_name=='':
tkinter.messagebox.showinfo('错误提示', '请选择文件')
elif path_name.find('.xls',0,len(path_name))==-1 and path_name.find('.xlsx',0,len(path_name))==-1:
tkinter.messagebox.showinfo('错误提示','请选择EXCEL文件')
else:
tkinter.messagebox.showinfo('选择提示','文件选择正确')
btnsave=tkinter.Button(text='保存',font=('楷体',12),width=8,command=save)
btnsave.grid(row=1,column=1)
root.mainloop()
2.作业2: 完成直播倒计时软件的制作
import tkinter
from tkinter import messagebox
import time
top=tkinter.Tk()
top.title('倒计时')
top.geometry('370x50+400+100')
ltitle=tkinter.Label(top,text='倒计时:',width=10,height=2,font=('楷体',14))
ltitle.grid(row=0,column=0)
ehour=tkinter.Entry(top,width=2,font=('楷体',14))
ehour.insert('end','00')
ehour.grid(row=0,column=1)
lhour=tkinter.Label(top,text='时',width=3,height=2,font=('楷体',14))
lhour.grid(row=0,column=2)
emin=tkinter.Entry(top,width=2,font=('楷体',14))
emin.insert('end','00')
emin.grid(row=0,column=3)
lmin=tkinter.Label(top,text='分',width=3,height=2,font=('楷体',14))
lmin.grid(row=0,column=4)
esec=tkinter.Entry(width=2,font=('楷体',14))
esec.insert('end','00')
esec.grid(row=0,column=5)
lsec=tkinter.Label(top,text='秒',width=3,height=2,font=('楷体',14))
lsec.grid(row=0,column=6)
def starts():
times=int(esec.get())+int(emin.get())*60+int(ehour.get())*60*60
if times==0:
messagebox.showinfo('错误提示','请设置时间')
else:
while times>0:
times-=1
minutes=times//60
seconds=times%60
hours=0
if minutes>=60:
hours=minutes//60
minutes=minutes%60
ehour.delete(0,'end')
emin.delete(0,'end')
esec.delete(0,'end')
ehour.insert('end',hours)
emin.insert('end',minutes)
esec.insert('end',seconds)
top.update()
time.sleep(1)
btn=tkinter.Button(width=6,text='开始',command=starts,font=('楷体',14))
btn.grid(row=0,column=7)
top.mainloop()