其他分享
首页 > 其他分享> > TKinter [第三章]

TKinter [第三章]

作者:互联网

TKinter [第三章]

学习目标-1

完成一个简易的添加程序:

  1. 所需界面元素:

    • 基础标签,充当显示器,接受和显示添加的数据
    • 按钮,点击按钮确认添加
    • 列表[listbox],负责存储需要添加的数据
  2. 功能实现:

    listbox初始存储着数据,当点击button后,在listbox中被选中的数据会被添加并显示在label标签中

新知识点

Listbox “列表盒”

  1. 创建方式:

    listbox_name = tk.Listbox(window_name)
    
  2. Listbox Object 参数一览

    1. 所属窗口:window_name

      listbox_name = tk.Listbox(window_name)
      
    2. “font” “bg” “width” “height” “color” 等参数与其他标签一致

    3. list/listvariable [列表数据]

      var = tk.StringVar()
      listbox_name = tk.Listbox(window_name , listvariable = var)
      
    4. 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')
        
  3. listbox中的方法

    1. 增添数据:[insert]

      # 末尾添加
      listbox_name.insert('end' , item)
      # 下标添加(在指定行中添加数据)
      listbox_name.insert(0 , item)
      
    2. 获取数据:[get]

      # 数字为index 下标
      listbox_name.insert(0)
      
    3. 删除数据:[delete]

      # 删除下表为0的项
      listbox_name.delete(0)
      # 删除从0-5项的项
      listbox_name.delete(0,5)
      
    4. 列表项可视化:[see]

      # 指定下标的项可见
      listbox_name.see(0)
      
    5. 清楚当前项的选定:[select_clear]

      listbox_name.select_clear()
      

学习目标-2

完成一个百度百科功能:

  1. 所需界面元素:
    • listbox,负责展示用来搜索的词条
    • button,负责搜索
    • label,负责显示搜索出的词条相关内容
    • label,负责提示用户输入词条
    • entry,负责接收用户输入的词条
    • label,负责提示用户输入的词条相关内容
    • entry,负责接收用户输入的词条相关内容
    • button,负责提交用户所输入的词条和内容信息
  2. 功能实现:
    • 能够根据词条搜索到相关信息
    • 能够自行添加新的词条并能够查询出新词条的信息

实战代码[学习目标-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()

标签:insert,search,第三章,name,list,tk,TKinter,listbox
来源: https://blog.csdn.net/weixin_42159618/article/details/111995042