TKinter [第三章]
学习目标-1
完成一个简易的添加程序:
-
所需界面元素:
- 基础标签,充当显示器,接受和显示添加的数据
- 按钮,点击按钮确认添加
- 列表[listbox],负责存储需要添加的数据
-
功能实现:
listbox初始存储着数据,当点击button后,在listbox中被选中的数据会被添加并显示在label标签中
新知识点
Listbox “列表盒”
-
创建方式:
listbox_name = tk.Listbox(window_name)
-
Listbox Object 参数一览
-
所属窗口:window_name
listbox_name = tk.Listbox(window_name)
-
“font” “bg” “width” “height” “color” 等参数与其他标签一致
-
list/listvariable [列表数据]
var = tk.StringVar() listbox_name = tk.Listbox(window_name , listvariable = var)
-
selectmode[单选/多选]
-
单选(默认)
-
单选:也是单选,但是滑动鼠标或者按下方向键会更改所选单元
listbox_name = tk.Listbox(window_name , list = var , selectmode = 'BROWSE')
-
多选
listbox_name = tk.Listbox(window_name , list = var , selectmode = 'MULTIPLE')
-
多选:也是多选,但是需要同时按住ctrl和shift或者拖动鼠标才可以进行多选
listbox_name = tk.Listbox(window_name , list = var , selectmode = 'EXTENDED')
-
-
-
listbox中的方法
-
增添数据:[insert]
# 末尾添加 listbox_name.insert('end' , item) # 下标添加(在指定行中添加数据) listbox_name.insert(0 , item)
-
获取数据:[get]
# 数字为index 下标 listbox_name.insert(0)
-
删除数据:[delete]
# 删除下表为0的项 listbox_name.delete(0) # 删除从0-5项的项 listbox_name.delete(0,5)
-
列表项可视化:[see]
# 指定下标的项可见 listbox_name.see(0)
-
清楚当前项的选定:[select_clear]
listbox_name.select_clear()
-
学习目标-2
完成一个百度百科功能:
- 所需界面元素:
- listbox,负责展示用来搜索的词条
- button,负责搜索
- label,负责显示搜索出的词条相关内容
- label,负责提示用户输入词条
- entry,负责接收用户输入的词条
- label,负责提示用户输入的词条相关内容
- entry,负责接收用户输入的词条相关内容
- button,负责提交用户所输入的词条和内容信息
- 功能实现:
- 能够根据词条搜索到相关信息
- 能够自行添加新的词条并能够查询出新词条的信息
实战代码[学习目标-1]
'''
@Author : 梁老师
@File : TKinter-第三章.py
@Software: PyCharm
'''
import tkinter as tk
window_name = tk.Tk()
window_name.title('Mr.Liang')
window_name.geometry('300x300')
# 变量定义区
var1 = tk.StringVar()
var2 = tk.StringVar()
var2.set((11,22,33,44,55,66))
# 回调函数区
def print_selection():
value = listbox_name.get(listbox_name.curselection())
var1.set(value)
# 创建标签
label_name = tk.Label(window_name , textvariable = var1 , bg = 'yellow' , width = 12 , height = 2)
label_name.pack()
# 创建按钮
button_name = tk.Button(window_name , text = 'print selection' , width = 12 , command = print_selection)
button_name.pack()
# 创建listbox
listbox_name = tk.Listbox(window_name , listvariable = var2 , font = ('Arial',20),bg = 'green' , selectmode = 'multiple')
# 通过迭代向listbox中添加列表中的元素
list_items= [1,2,3,4]
for item in list_items:
# listbox的增[方法2:末尾添加]
listbox_name.insert('end',item)
# listbox的增[方法1:下标添加]
listbox_name.insert(0 , 'first')
listbox_name.insert(2 , 'second')
# listbox的删
listbox_name.delete(2)
# listbox的放置
listbox_name.pack()
window_name.mainloop()
代码实战[学习目标-2]
'''
@Author : 梁老师
@File : 005-test_two.py
@Software: PyCharm
'''
import tkinter as tk
window_name = tk.Tk()
window_name.title('Mr.Liang')
window_name.geometry('600x666')
# 数据区:
search_dic = {"鲁迅":"原名周樟寿,后改名周树人,字豫山,后改字豫才,浙江绍兴人。",
"斐波那契":"比萨的列奥纳多,又称斐波那契,中世纪意大利数学家,是西方第一个研究斐波那契数的人",
"毕达哥拉斯":"古希腊数学家、哲学家。毕达哥拉斯出生在爱琴海中的萨摩斯岛(今希腊东部小岛)的贵族家庭",
"尼采":"德国哲学家、语言学家、文化评论家、诗人、作曲家、思想家。",
"牛顿":"英国皇家学会会长,英国著名的物理学家,百科全书式的“全才”",
"爱因斯坦":"出生于德国巴登-符腾堡州乌尔姆市,毕业于苏黎世联邦理工学院,现代物理学家",
}
key_list = []
value_list = []
var_search_value = tk.StringVar()
list_search_key = tk.StringVar()
# 函数区
# 迭代生成key列表
for key,value in search_dic.items():
key_list.append(key)
value_list.append(value)
# 回调函数[search]
def searchKey():
var_search_value.set(search_dic[search_list.get(search_list.curselection())])
# 回调函数[insert]
def insert_book():
# 添加到字典中
search_dic[insert_key_entry.get()] = insert_value_entry.get()
search_list.insert('end' , insert_key_entry.get())
# 放置进listbox
list_search_key.set(key_list)
# 设置listbox
search_list = tk.Listbox(listvariable = list_search_key , width = 47 , height = 12 , bg = 'orange' , font = (16))
search_list.pack()
# 设置搜索按钮
search = tk.Button(text = 'Search' , width = 36 , bg = 'blue' , command = searchKey , font = ('微软雅黑',16))
search.pack()
# 设置内容展示标签
search_show = tk.Label(textvariable = var_search_value , width = 36 , height = 5 , bg = 'green' , font = ('微软雅黑',16) , wraplength = 400)
search_show.pack()
# 设置词条提示标签
insert_key_label = tk.Label(text = '输入添加的Key' , bg = 'yellow' , font = ('微软雅黑',12) , width = 47 ,height = 1)
insert_key_label.pack()
# 设置词条输入
insert_key_entry = tk.Entry(font = ('微软雅黑',20))
insert_key_entry.pack()
# 设置信息提示标签
insert_value_label = tk.Label(text = '输入添加的Value' , bg = 'yellow' , font = ('微软雅黑',12) , width = 47 ,height = 1)
insert_value_label.pack()
# 接收信息输入
insert_value_entry = tk.Entry(font = ('微软雅黑',20))
insert_value_entry.pack()
# 设置提交按钮
insert_button = tk.Button(text = '添加' , command = insert_book)
insert_button.pack()
window_name.mainloop()