立即学习:https://edu.csdn.net/course/play/19711/343113?utm_source=blogtoedu
listbox
知识点:
1)创建listbox:
self.item_listbox = tkinter.Listbox(self.root,selectmode = "multiple", font=("微软雅黑",12), fg = "black",bg = "white")#设置一个listbox,且为复选框(multiple),单选框(single)
2)设置复选还是单选:selectmode = "multiple"
3)获得当前选择项的索引:
self.item_listbox.curselection()#返回的是一个列表,获得当前listbox中被选中第一个元素的索引
4)根据索引获得项目内容
self.chosen_listbox.insert('end',self.item_listbox.get(self.chosen_index))#根据索引获得元素的内容
完整代码:
'''
设计一个简单的选择listbox,由两个listbox和两个label以及一个按钮组成,
将左边选中的元素,通过点击按钮或者双击元素,自动添加到右边的listbox中
'''
from tkinter import *
import tkinter
class mainwindow():
def __init__(self):
#------------创建主窗体-----------------
self.root = tkinter.Tk()
self.root.title("linlianqin")
self.root.geometry('450x280') # 定义窗体的初始大小
self.root.maxsize(1200, 1200) # 设置窗口可以显示的最大尺寸
self.item_list()
self.chosen_button()
self.chosen_list()
self.root.mainloop() # 显示窗口,这个代码一定要放在所有窗口设置的后面
def item_list(self):#定义列表1
self.items = ["python","c","java","PHP"]#设置一个listbox元素组成的列表
self.item_label = tkinter.Label(self.root,text = "请选择你感兴趣的语言:",font = ("微软雅黑",9),
fg = "white",bg = "#123333")
self.item_label.grid(row = 0,column = 0)
self.item_listbox = tkinter.Listbox(self.root,selectmode = "multiple", font=("微软雅黑",12),
fg = "black",bg = "white")#设置一个listbox,且为复选框(multiple),单选框(single)
#将元素插入到listbox当中
for item in self.items:
self.item_listbox.insert("end",item)
#定义双击选中元素自动添加到另一个列表的事件
self.item_listbox.bind("<Double-Button-1>",self.button_multiple_event)
self.item_listbox.grid(row = 1,column = 0)
def chosen_button(self):#定义一个添加按钮
self.chosenbutton = tkinter.Button(self.root,text = "add>>>",font = ("微软雅黑",12),
fg = "black",bg = "#fffffe")
self.chosenbutton.bind("<Button-1>",self.button_multiple_event)
self.chosenbutton.grid(row = 1,column = 1)
def chosen_list(self):#定义另一个列表,用于存放选中的元素
self.chosen_label = tkinter.Label(self.root, text="感兴趣的语言:", font=("微软雅黑", 9),
fg="white", bg="#123393")
self.chosen_label.grid(row=0, column=2)
self.chosen_listbox = tkinter.Listbox(self.root, font=("微软雅黑", 12),
fg="black", bg="white") # 设置一个listbox
self.chosen_listbox.grid(row=1,column=2)
def button_single_event(self,event):#定义按钮单选事件
self.chosen_index = self.item_listbox.curselection()[0]#获得当前listbox中被选中第一个元素的索引
# self.item_listbox.curselection()返回的是一个列表
self.chosen_listbox.insert('end',self.item_listbox.get(self.chosen_index))#根据索引获得元素的内容
def button_multiple_event(self,event):#定义按钮复选事件
for self.chosen_index in self.item_listbox.curselection():
self.chosen_listbox.insert('end',self.item_listbox.get(self.chosen_index))
#若选中了就删除该项
while True:
if self.item_listbox.curselection():#如果当前由被选择中的项目
self.item_listbox.delete(self.item_listbox.curselection()[0])
else:
break
def main():
mainwindow()
if __name__ == '__main__':
main()