添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

确定可以选择多少项,以及鼠标拖动的影响 选择:

BROWSE: 通常,只能从列表框中选择一行。 如果 单击一个项目,然后 拖动 到不同的行,选择将会 跟随鼠标, 是默认的。

SINGLE: 你只能选择一行, 不能拖动

MULT IPLE: 您可以同时选择任意数量的行。 点击 在任意直线上,无论它是否被选中。 不能拖动

EXTENDED: 您可以一次选择任何相邻的g线。 单击第一行并将g拖到最后一行。 能拖动

使用selectmode = EXPANDED 使用Listbox来支持Shift和Control(如Windows下的快捷键)
from Tkinter import *
root=Tk()
LB1=Listbox(root)
Label(root,text='单选:选择你的课程').pack()
for item in ['Chinese','English','Math']:
    LB1.insert(END,item)
LB1.pack()
LB2=Listbox(root,selectmode=MULTIPLE)
Label(root,text='多选:你会几种编程语言').pack()
for item in ['python','C++','C','Java','Php']:
    LB2.insert(END,item)
LB2.pack()
root.mainloop()
insert()也可以选择在已有的item前后插入新的item,只需要指出在第几个。

删除Listbox 中的项,使用delete,这个函数也有两个参数,第一个为开始的索引值;第二个为结束的索引值,如果不指定则只删除第一个索引项。

删除全部内容 , 使用 delete 指定第一个索引值 0 和最后一个参数 END ,即可

selection_set()指定选择的条目

selection_clear()取消选择的条目

size():得到条目个数

get():得到索引的条目

selection_includes()判断一个项是否被选中

from Tkinter import *
root=Tk()
LB1=Listbox(root)
Label(root,text='单选:选择你的课程').pack()
for item in ['Chinese','English','Math']:
    LB1.insert(END,item)
LB1.pack()
LB2=Listbox(root,selectmode=EXTENDED)
Label(root,text='多选:你会几种编程语言').pack()
for item in ['python','C++','C','Java','Php']:
    LB2.insert(END,item)
LB2.insert(1,'JS','Go','R')
LB2.delete(5,6)
LB2.select_set(0,3)
LB2.select_clear(0,1)
print LB2.size()
print LB2.get(3)
print LB2.select_includes(3)
LB2.pack()
root.mainloop()
#打印当前列表中的项值
print v.get()
#输出:('0', '100', '200', '300', '400', '500', '600', '700', '800', '900')
#改变v的值,使用tuple可以与item对应
v.set(('1000','200'))
#结果只有两项了1000和200
lb.pack()
root.mainloop()
Listbox 与事件绑定 不支持command 来设置回调函数了,使用 bind 来指定回调函数 ,打印当前选中的值

绑定函数:

def bind(self, sequence=None, func=None, add=None):
    """Bind to this widget at event SEQUENCE a call to function FUNC.
    SEQUENCE is a string of concatenated event
    patterns. An event pattern is of the form
    <MODIFIER-MODIFIER-TYPE-DETAIL> where MODIFIER is one
    of Control, Mod2, M2, Shift, Mod3, M3, Lock, Mod4, M4,
    Button1, B1, Mod5, M5 Button2, B2, Meta, M, Button3,
    B3, Alt, Button4, B4, Double, Button5, B5 Triple,
    Mod1, M1. TYPE is one of Activate, Enter, Map,
    ButtonPress, Button, Expose, Motion, ButtonRelease
    FocusIn, MouseWheel, Circulate, FocusOut, Property,
    Colormap, Gravity Reparent, Configure, KeyPress, Key,
    Unmap, Deactivate, KeyRelease Visibility, Destroy,
    Leave and DETAIL is the button number for ButtonPress,
    ButtonRelease and DETAIL is the Keysym for KeyPress and
    KeyRelease. Examples are
    <Control-Button-1> for pressing Control and mouse button 1 or
    <Alt-A> for pressing A and the Alt key (KeyPress can be omitted).
    An event pattern can also be a virtual event of the form
    <<AString>> where AString can be arbitrary. This
    event can be generated by event_generate.
    If events are concatenated they must appear shortly
    after each other.
    FUNC will be called if the event sequence occurs with an
    instance of Event as argument. If the return value of FUNC is
    "break" no further bound function is invoked.
    An additional boolean parameter ADD specifies whether FUNC will
    be called additionally to the other bound function or whether
    it will replace the previous function.
    Bind will return an identifier to allow deletion of the bound function with
    unbind without memory leak.
    If FUNC or SEQUENCE is omitted the bound function or list
    of bound events are returned."""
    return self._bind(('bind', self._w), sequence, func, add)
from Tkinter import *
root = Tk()
def CallOn(event):
    root1=Tk()
    Label(root1,text='你的选择是'+lb.get(lb.curselection())+"语言!").pack()
    Button(root1,text='退出',command=root1.destroy).pack()
lb = Listbox(root)
#双击命令
lb.bind('<Double-Button-1>',CallOn)
for i in ['python','C++','C','Java','Php']:
    lb.insert(END,i)
lb.insert(END,'JS','Go','R')
lb.pack()
root.mainloop()
参考:http://blog.csdn.net/jcodeer/article/details/1811310

代码装饰:通过Button将选中的Listbox中的条目打印在标签Label和Entry中

from Tkinter import *
root = Tk()
root.geometry('100x100')
lb = Listbox(root)
#双击命令
v=StringVar()
#Entry类似文本框,可只读,也可修改,还可通过回调函数获取文本
#Label标签超做不是那么灵活但是也可通过回调函数获取文本
Entry(root,textvariable=v,width=6).pack()
Label(root,textvariable=v,width=6,bg='green').pack()
def Call_Entry():
    val=lb.get(lb.curselection())
    v.set(val)
Button(root,text='press',fg='blue',command=Call_Entry,width=5).pack()
for i in ['python','C++','C','Java','Php']:
    lb.insert(END,i)
lb.insert(END,'JS','Go','R')
lb.pack()
root.mainloop()
Listbox 控件 列表框 控件;在 Listbox 窗口小部件是用来显示一个字符串列表给用户 Listbox 组件通常被用于显示一组文本选项, Listbox 组件跟 Checkbutton 和Radiobutton 组件类似,不过 Listbox 是以列表的形式来提供选项的(后两个是通过按钮的形式)。 Listbox (master=None, **options) (class) master...
python -Tkinter 列表框 Listbox (七)一、实现 Listbox 列表框 添加元素和删除元素from tkinter import * root = Tk() theLB = Listbox (root) theLB.pack() # theLB.insert(0,'佩奇') #0代表插入的位置 # theLB.insert(END,'汤姆') #END表示最后一个位置插入 for...
root.minsize(300, 200) text = ” I want to study PYTHON ” label = Label(root, text = text, fg = “black”, bg=”red”) label.pack(side = LEFT) 杏仁桉到底在哪里: root['menu'] = menubar或者root.config(menu=menubar)都可以 复选框和单选要使用的话记得是付给各个菜单里的label不同的变量(复选checkbutton) radiobutton就是付给相同的变量属性variable bind函数绑定的函数必须是继承event的def Print(event): bind可以给控件绑定也可给全部界面绑定 例子是绑定的控件optionmenu Python的GUI编程(八)Scrollbar(滚动条) 杏仁桉到底在哪里: lb['yscrollcommand'] = sl.set sl['command'] = lb.yview 这两行就和把entry和label用textvariable相联系一样