zoukankan      html  css  js  c++  java
  • python tkinter Listbox用法

    python tkinter组件的Listbox的用法,见下面代码的演示:

     1 from tkinter import *
     2 
     3 root=Tk()
     4 v=StringVar()
     5 #Listbox与变量绑定'
     6 lb1=Listbox(root,listvariable=v)
     7 v.set(('10','20','30','40','50'))
     8 print(v.get())
     9 lb1.pack()
    10 
    11 #.创建一个可以多选的Listbox,使用属性selectmaod'
    12 lb2=Listbox(root,selectmode=MULTIPLE)
    13 for item in range(10):
    14     lb2.insert(END,str(item))
    15 #  有两个特殊的值ACTIVE和END,ACTIVE是向当前选中的item前插入一个
    16 # (即使用当前选中的索引作为插入位置);END是向
    17 #  Listbox的最后一项添加插入一项
    18 
    19 lb2.delete(1,3)
    20 #删除全部内容,使用delete指定第一个索引值0和最后一个参数END,即可
    21 lb2.pack()
    22 
    23 #这个属性selectmode还可以设置为BROWSE,可以通过鼠标来移动Listbox中的选中位置
    24 # (不是移动item),
    25 #这个属性也是Listbox在默认设置的值,这个程序与1.程序运行的结果的一样的
    26 scrollbar=Scrollbar(root)
    27 scrollbar.pack(side=RIGHT,fill=Y)
    28 lb3=Listbox(root,selectmode=BROWSE,yscrollcommand=scrollbar.set)
    29 for item in range(20):
    30     lb3.insert(END,str(item))
    31     lb3.pack(side=LEFT,fill=BOTH)
    32 scrollbar.config(command=lb3.yview)
    33 
    34 #将一个垂直方向的Scrollbar和listboxs/canvases/text fields这些控件结合起来,
    35 # 你只需要按照下面的步骤即可:
    36 #1.将这些控件的yscrollcommand选项设置为scrollbar的set方法。
    37 #2.将scrollbar的command选项设置为这些控件的yview方法。
    38 
    39 print(lb3.size())
    40 print(lb3.get(3))
    41 print(lb3.get(3,7))
    42 lb3.selection_set(0,10)
    43 lb3.selection_clear(0,3)
    44 lb3.pack()
    45 
    46 
    47 def printlist(event):
    48     print(lb4.get(lb4.curselection()))
    49 
    50 
    51 #使用selectmode  = EXPANDED使用Listbox来支持Shift和Control
    52 lb4=Listbox(root,selectmode=EXTENDED)
    53 lb4.bind('<Double-Button-1>',printlist)
    54 for item in ['python','tkinter','widget']:
    55     lb4.insert(END,item)
    56 lb4.pack()
    57 
    58 
    59 root.mainloop()

     再来一个实例:

    在下面这个例子中,点击Listbox的项目,输出索引号。

     1 from tkinter import *
     2 
     3 class make_list(Listbox):
     4     def __init__(self,master, **kw):
     5         frame = Frame(master)
     6         frame.pack()
     7         self.build_main_window(frame)
     8 
     9         kw['selectmode'] = SINGLE
    10         Listbox.__init__(self, master, kw)
    11         master.bind('<Button-1>', self.click_button)
    12         master.curIndex = None
    13 
    14     def click_button(self, event):
    15         ##this block works
    16         w = event.widget
    17         index = int(w.curselection()[0])
    18         value = w.get(index)
    19         print(value)
    20         ##this doesn't
    21         self.curIndex = self.nearest(event.y)
    22         print(self.curIndex)
    23         self.curIndex = event.widget.nearest(event.y)
    24         print(self.curIndex)
    25 
    26     #display the window, calls the listbox
    27     def build_main_window(self, frame):
    28         self.build_listbox(frame)
    29 
    30     #listbox
    31     def build_listbox(self, frame):
    32         listbox = Listbox(frame)
    33         for item in ["one", "two", "three", "four"]:
    34             listbox.insert(END, item)
    35         listbox.insert(END, "a list entry")
    36         listbox.pack()
    37         return
    38 
    39 if __name__ == '__main__':
    40     tk = Tk()
    41     make_list(tk)
    42     tk.mainloop()

    如果对于Tkinter的事件绑定不太熟悉,可以参见下面这篇教程:

    python tkinter教程-事件绑定

  • 相关阅读:
    函数和常用模块【day06】:shutil模块(四)
    函数和常用模块【day06】:time模块 (一)
    函数和常用模块【day05】:生成器并行计算(五)
    函数和常用模块【day05】:装饰器前奏(一)
    函数和常用模块【day04】:内置函数(八)
    函数和常用模块【day04】:作用域、局部和全局变量(四)
    函数和常用模块【day04】:函数的非固定参数(三)
    Python基础【day02】:元组和购物车练习的知识点
    Python基础【day02】:字符串(四)
    Python基础【day03】:入门知识拾遗(八)
  • 原文地址:https://www.cnblogs.com/hackpig/p/8146518.html
Copyright © 2011-2022 走看看