# 2.tkinter-建立窗口
import tkinter as tk # 导入tkinter并简化命名为tk
win = tk.Tk() # 建立变量名为win的图形化界面窗口
win.mainloop() # 接受各类响应事件
import tkinter as tk
win = tk.Tk()
win.geometry('320x240+104+70') # 以”宽x高+x+y”格式
win.title('受邀人员管理程序') # 设置窗口标题
win.mainloop()
#### 体验活动: 课堂抽签程序
# 摇奖抽奖
import tkinter as tk
import random
flag = False # 若flag=True则姓名变化中,否则不变。
# 抽奖姓名
names = ['林黛玉', '薛宝钗', '贾元春', '贾迎春', '贾探春', '贾惜春', '李纨', '妙玉',
'史湘云', '王熙凤', '贾巧姐', '秦可卿', '晴雯', '麝月', '袭人', '鸳鸯',
'雪雁', '紫鹃', '碧痕', '平儿', '香菱', '金钏', '司棋', '抱琴', '赖大',
'焦大', '王善保', '周瑞', '林之孝', '乌进孝', '包勇', '吴贵', '吴新登',
'邓好时', '王柱儿', '余信', '庆儿', '昭儿', '兴儿', '隆儿', '坠儿', '喜儿',
'寿儿', '丰儿', '住儿', '小舍儿', '李十儿', '玉柱儿']
def myfun():
global flag
btn['text'] = '停止' if not flag else '开始'
flag = not flag
if flag:
myfun1()
def myfun1():
if flag:
lbl['text'] = random.choice(names)
print(lbl['text'])
win.after(100, myfun1)
win = tk.Tk()
win.title('课堂抽签程序')
lbl = tk.Label(win, text='****', width=6, font="-family {Times New Roman} -size 72 -weight bold")
btn = tk.Button(win, text='开始', command=myfun, font='-size 36')
lbl.grid(row=0, column=0)
btn.grid(row=0, column=1, padx=10)
win.mainloop()
寿儿 住儿 雪雁 王熙凤 住儿 吴新登 袭人 王熙凤 紫鹃 王善保
import tkinter as tk
def mySelect(event):
'''响应列表选择事件'''
index = lbx.curselection() # 获取所选项的索引放入index序列变量中
if index:
index = index[0] # 取首项(单选只需取一项)
txt.delete(0,'end') # 输入框清空
txt.insert(0,lbx.get(index)) # 把所选项的姓名插入输入框中
def myDelete():
'''响应删除按钮'''
index = lbx.curselection()
if index:
index = index[0]
lbx.delete(index) # 删除列表框中的所选项
def myUpdate():
'''响应修改按钮'''
index = lbx.curselection()
if index:
index = index[0]
lbx.delete(index) # 删除列表框中的所选项
lbx.insert(index, txt.get()) # 把更新后内容插入到列表框所选位置
def myAdd():
'''响应增加按钮'''
item = txt.get() # 获取输入框的内容
if item:
lbx.insert('end', item) # 在列表框末位增加内容
# 建立窗口
win = tk.Tk()
win.title('受邀人员管理程序')
win.geometry('420x320')
# 定义组件
lbl = tk.Label(win, text='选择一行【删除】或在文本框中修改后按【修改】或【增加】')
lbx = tk.Listbox(win)
lbx.insert(0,*['张三', '李四'])
txt = tk.Entry(win)
btn1 = tk.Button(win, text='删除')
btn2 = tk.Button(win, text='修改')
btn3 = tk.Button(win, text='增加')
# 组件布局
lbl.grid(row=0, column=0, columnspan=2,padx=10, pady=10)
lbx.grid(row=1, column=0, rowspan=4)
txt.grid(row=1, column=1)
btn1.grid(row=2, column=1)
btn2.grid(row=3, column=1)
btn3.grid(row=4, column=1)
# 事件
lbx.bind('<<ListboxSelect>>',mySelect)
btn1.config(command=myDelete)
btn2.config(command=myUpdate)
btn3.config(command=myAdd)
# 接受各类事件响应
win.mainloop()
# 技术支持 - 提供了 photo1.png和photo2.png这2张图片素材
import tkinter as tk
win = tk.Tk()
img = tk.PhotoImage(file='photo1.png') # 读取图片
lbl = tk.Label(win, image=img) # 标签显示图片
lbl.pack()
win.mainloop()
# 提供给学生源程序供学生修改
import tkinter as tk
def mySelect(event):
'''响应列表选择事件'''
index = lbx.curselection() # 获取所选项的索引放入index序列变量中
if index:
index = index[0] # 取首项(单选只需取一项)
txt.delete(0,'end') # 输入框清空
txt.insert(0,lbx.get(index)) # 把所选项的姓名插入输入框中
def myDelete():
'''响应删除按钮'''
index = lbx.curselection()
if index:
index = index[0]
lbx.delete(index) # 删除列表框中的所选项
def myUpdate():
'''响应修改按钮'''
index = lbx.curselection()
if index:
index = index[0]
lbx.delete(index) # 删除列表框中的所选项
lbx.insert(index, txt.get()) # 把更新后内容插入到列表框所选位置
def myAdd():
'''响应增加按钮'''
item = txt.get() # 获取输入框的内容
if item:
lbx.insert('end', item) # 在列表框末位增加内容
# 建立窗口
win = tk.Tk()
win.title('受邀人员管理程序')
win.geometry('420x320')
# 定义组件
lbl = tk.Label(win, text='选择一行【删除】或在文本框中修改后按【修改】或【增加】')
lbx = tk.Listbox(win)
lbx.insert(0,*['张三', '李四'])
txt = tk.Entry(win)
btn1 = tk.Button(win, text='删除')
btn2 = tk.Button(win, text='修改')
btn3 = tk.Button(win, text='增加')
# 组件布局
lbl.grid(row=0, column=0, columnspan=2,padx=10, pady=10)
lbx.grid(row=1, column=0, rowspan=4)
txt.grid(row=1, column=1)
btn1.grid(row=2, column=1)
btn2.grid(row=3, column=1)
btn3.grid(row=4, column=1)
# 事件
lbx.bind('<<ListboxSelect>>',mySelect)
btn1.config(command=myDelete)
btn2.config(command=myUpdate)
btn3.config(command=myAdd)
# 接受各类事件响应
win.mainloop()
# 参考程序 - 实现了用文件保存
import tkinter as tk
import os
def mySelect(event):
'''响应列表选择事件'''
index = lbx.curselection() # 获取所选项的索引放入index序列变量中
if index:
index = index[0] # 取首项(单选只需取一项)
txt.delete(0,'end') # 输入框清空
txt.insert(0,lbx.get(index)) # 把所选项的姓名插入输入框中
def myDelete():
'''响应删除按钮'''
index = lbx.curselection()
if index:
index = index[0]
lbx.delete(index) # 删除列表框中的所选项
updateFile('删除')
def myUpdate():
'''响应修改按钮'''
index = lbx.curselection()
if index:
index = index[0]
lbx.delete(index) # 删除列表框中的所选项
lbx.insert(index, txt.get()) # 把更新后内容插入到列表框所选位置
updateFile('修改')
def myAdd():
'''响应增加按钮'''
item = txt.get() # 获取输入框的内容
if item:
lbx.insert('end', item) # 在列表框末位增加内容
updateFile('新增')
def updateFile(event):
with open('people.txt', 'w', encoding='UTF-8') as f:
names = lbx.get(0, 'end')
for name in names:
print(name,file=f)
win.title('受邀人员管理程序-{}已保存'.format(event))
# 建立窗口
win = tk.Tk()
win.title('受邀人员管理程序')
win.geometry('420x320')
# 定义组件
lbl = tk.Label(win, text='选择一行【删除】或在文本框中修改后按【修改】或【增加】')
lbx = tk.Listbox(win)
# 验证本地文件
if not os.path.exists('people.txt'):
with open('people.txt', 'w', encoding='UTF-8') as f:
f.write('张三\n李四')
with open('people.txt', 'r', encoding='UTF-8') as f:
names = f.readlines()
for name in names:
lbx.insert('end', name.strip())
txt = tk.Entry(win)
btn1 = tk.Button(win, text='删除')
btn2 = tk.Button(win, text='修改')
btn3 = tk.Button(win, text='增加')
# 组件布局
lbl.grid(row=0, column=0, columnspan=2,padx=10, pady=10)
lbx.grid(row=1, column=0, rowspan=4)
txt.grid(row=1, column=1)
btn1.grid(row=2, column=1)
btn2.grid(row=3, column=1)
btn3.grid(row=4, column=1)
# 事件
lbx.bind('<<ListboxSelect>>',mySelect)
btn1.config(command=myDelete)
btn2.config(command=myUpdate)
btn3.config(command=myAdd)
# 接受各类事件响应
win.mainloop()
# 参考程序 - 实现了用文件保存与图片显示,照片文件名为:姓名.png,否则随机显示给定的2张图片
import tkinter as tk
import os
import random
from PIL import Image,ImageTk
def mySelect(event):
'''响应列表选择事件'''
index = lbx.curselection() # 获取所选项的索引放入index序列变量中
if index:
index = index[0] # 取首项(单选只需取一项)
txt.delete(0,'end') # 输入框清空
txt.insert(0,lbx.get(index)) # 把所选项的姓名插入输入框中
# 照片显示,需要PIL库支持,可用 pip install pillow 安装
imgFile = '{}.png'.format(lbx.get(index))
if not os.path.exists(imgFile):
imgFile = random.choice(['photo1.png','photo2.png'])
Img = Image.open(imgFile).resize((144,172))
img = ImageTk.PhotoImage(Img)
lblImg.img = img
lblImg['image'] = img
def myDelete():
'''响应删除按钮'''
index = lbx.curselection()
if index:
index = index[0]
lbx.delete(index) # 删除列表框中的所选项
updateFile()
def myUpdate():
'''响应修改按钮'''
index = lbx.curselection()
if index:
index = index[0]
lbx.delete(index) # 删除列表框中的所选项
lbx.insert(index, txt.get()) # 把更新后内容插入到列表框所选位置
updateFile()
def myAdd():
'''响应增加按钮'''
item = txt.get() # 获取输入框的内容
if item:
lbx.insert('end', item) # 在列表框末位增加内容
updateFile()
def updateFile():
with open('people.txt', 'w', encoding='UTF-8') as f:
names = lbx.get(0, 'end')
for name in names:
print(name,file=f)
win.title('受邀人员管理程序-已保存')
# 建立窗口
win = tk.Tk()
win.title('受邀人员管理程序')
win.geometry('420x320')
# 定义组件
lbl = tk.Label(win, text='选择一行【删除】或在文本框中修改后按【修改】或【增加】')
lbx = tk.Listbox(win)
# 验证本地文件
if not os.path.exists('people.txt'):
with open('people.txt', 'w', encoding='UTF-8') as f:
f.write('张三\n李四')
with open('people.txt', 'r', encoding='UTF-8') as f:
names = f.readlines()
for name in names:
lbx.insert('end', name.strip())
txt = tk.Entry(win)
btn1 = tk.Button(win, text='删除')
btn2 = tk.Button(win, text='修改')
btn3 = tk.Button(win, text='增加')
lblImg = tk.Label(win)
# 组件布局
lbl.grid(row=0, column=0, columnspan=3,padx=10, pady=10)
lbx.grid(row=1, column=0, rowspan=4)
txt.grid(row=1, column=1)
lblImg.grid(row=2,column=1, rowspan=3)
btn1.grid(row=2, column=2)
btn2.grid(row=3, column=2)
btn3.grid(row=4, column=2)
# 事件
lbx.bind('<<ListboxSelect>>',mySelect)
btn1.config(command=myDelete)
btn2.config(command=myUpdate)
btn3.config(command=myAdd)
# 接受各类事件响应
win.mainloop()