一.tkinter模块之事件绑定
实例1.1
from tkinter import *
def show(event) :
s = event.keysym
lb.config(text = s )
root = Tk()
root.title("按键实验")
root.geometry('200x200')
lb = Label(root,text = "请按键",font = ('黑体1',48))
lb.bind('<Key>',show) #将标签绑定键盘
lb.focus_set() #因为是键盘
lb.pack()
root.mainloop()
运行结果:
实例2.1
from tkinter import *
def show(event) :
s = '光标位于x=%s,y=%s'%(str(event.x),str(event.y))
lb.config(text = s)
root = Tk()
root.title('鼠标实验')
root.geometry('200x200')
lb = Label(root,text = '请单击窗体')
lb.pack()
root.bind('<Button-1>',show) #show为当Button-1被触发后,要执行的函数
root.mainloop()
运行截图:
- 分
- 隔
- 线
二.tkinter模块之菜单控件使用
1.
实例1.1
from tkinter import *
root = Tk()
root.geometry('320x240')
mainmenu = Menu(root) #相当于给根窗体(这里是菜单)起个名字,好比 '班级名称'
filemenu = Menu(mainmenu) #这个是菜单(会显示),相当于 班级里每个同学的 ’名字‘
mainmenu.add_cascade(label = 'file',menu = filemenu)
editmenu = Menu(mainmenu)
mainmenu.add_cascade(label = 'edit',menu = editmenu)
printmenu = Menu(mainmenu)
mainmenu.add_cascade(label = 'print',menu = printmenu)
root.config(menu = mainmenu)
运行结果:
- 分
- 隔
- 线
二.tkinter模块之子窗体Toplevel控件
1.
实例1.1
实现代码:
from tkinter import *
def newWind() :
winNew = Toplevel(root)
winNew.geometry('320x240')
winNew.title('新窗体')
lb2 = Label(winNew,text = "我在新窗体上")
lb2.place(relx = 0.2,rely = 0.2)
btClose = Button(winNew,text = '关闭',command = winNew.destroy)
btClose.place(relx = 0.7,rely = 0.5)
root = Tk()
root.title('新建窗体实验')
root.geometry('320x240')
lb1 = Label(root,text = '主窗体',font=('黑体',32,'bold'))
lb1.place(relx = 0.2,rely = 0.2)
mainmenu = Menu(root)
menuFile = Menu(mainmenu)
mainmenu.add_cascade(label = "菜单",menu = menuFile) #用来添加一个菜单分组
menuFile.add_command(label = "新窗体",command = newWind) #用来添加一条菜单命令
menuFile.add_separator() #用来添加一分割线
menuFile.add_command(label = "退出",command = root.destroy)
root.config(menu = mainmenu)
root.mainloop()
运行截图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020041515313927.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1NzM4Mzc5,size_16,color_FFFFFF,t_70)
- 分
- 隔
- 线
三.tkinter模块之模式对话框
(1)消息对话框
实例1.1
#实例:确认取消对话框
>>> import tkinter.messagebox
>>> arwser = tkinter.messagebox.askokcancel('新消息','选择是否')
运行结果:
实例1.2
#实例:重试取消对话框
>>> import tkinter.messagebox
>>> aser = tkinter.messagebox.askretrycancel('新消息','选择是否')
>>> print(aser) #注意:当我们成功运行即弹出对话框后,输出为 True,否则为 False
True
运行结果:
综合实例1.3
代码:
from tkinter import *
import tkinter.messagebox
root = Tk()
def xz():
answer = tkinter.messagebox.askokcancel ('请选择','请选择确定或取消')
if answer :
lb.config(text = '已确认')
else :
lb.config(text = '已取消')
lb = Label(root,text = '') # text 什么也不显示(当前表现为空白)
lb.pack()
btn = Button(root,text = '弹出对话框',command = xz)
btn.pack()
root.mainloop()
(2)输入对话框与文件对话框
实例2.1
>>> from tkinter import *
>>> import tkinter.simpledialog
>>> root = Tk()
>>> s = tkinter.simpledialog.askstring('test','输入一个字符串')
运行结果:
实例2.2
>>> import tkinter.filedialog
>>> A = tkinter.filedialog.askopenfilename()
运行过程:
综合实例2.3
#只能选择一个文件夹
from tkinter import *
import tkinter.filedialog
root = Tk()
def xz():
filename = tkinter.filedialog.askopenfilename() #只能选择一个文件夹
if filename :
lb.config(text = '你选择的文件是'+filename)
else :
lb.config(text = '你没有选择任何文件')
lb = Label(root,text = '')
lb.pack()
btn = Button(root,text = '弹出文件选择对话框',command = xz)
btn.pack()
root.mainloop()
运行结果:
综合实例2.3
#这个是可以选择多个文件夹的
from tkinter import *
import tkinter.filedialog
root = Tk()
def xz():
filename = tkinter.filedialog.askopenfilenames()#可以选择多个文件夹
s = ''
for string in filename :
s = s + string + '\n'
lb.config(text = s )
lb = Label(root,text = '')
lb.pack()
btn = Button(root,text = '弹出文件选择对话框',command = xz)
btn.pack()
root.mainloop()
运行结果: