栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

如何利用tkinter编程_python标准gui库tkinter使用方法?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何利用tkinter编程_python标准gui库tkinter使用方法?

Listbox 1、Listbox介绍

Tkinter的Listbox 小部件用于显示项目列表,其中所有项目都是具有相同字体和颜色的文本项目。 用户可以根据小部件的配置从列表中选择多个要显示的项目。 列表框在创建时最初是空的,并且需要插入多行文本,这可以使用 insert 方法完成,其中索引和字符串必须作为参数给出,其中索引是列表和字符串中的项目编号 是要显示的文本项。

要创建一个列表框,可以像这样使用 tk.Listbox 类:

w = Listbox(master, option,..)

其中,master代表父窗口,option是widget可以使用的选项列表,options是逗号分隔的键值对。

2、管理Listbox项

要将项目填充到 Listbox,首先创建一个使用项目列表初始化的 StringVar 对象。 然后将此 StringVar 对象分配给 listvariable 选项,如下所示:

list_items = StringVar(value=items)
listbox = tk.Listbox(
    container,
    height,
    listvariable=list_items
)

要在列表框中添加、删除或重新排列项目,只需修改 list_items 变量。

3、选择Listbox项

selectmode 选项确定是否可以一次选择单个项目或多个项目。

'browse'- 允许单一选择。'extended'- 允许多选。

默认情况下,选择模式是browse。 curselection() 方法返回当前选定索引的列表。

4、绑定选中的事件

要在所选项目更改时执行函数,请将该函数绑定到<>事件。

listbox.bind('<>', callback)
5、完整示例

下面的程序显示一个包含编程语言列表的列表框。当选择一个或多个项目时,程序会在消息框上显示选定的项目:

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo

# create the root window
root = tk.Tk()
root.geometry('200x100')
root.resizable(False, False)
root.title('Listbox')

root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

# create a list box
langs = ('Java', 'C#', 'C', 'C++', 'Python',
        'Go', 'Javascript', 'PHP', 'Swift')

langs_var = tk.StringVar(value=langs)

listbox = tk.Listbox(
    root,
    listvariable=langs_var,
    height=6,
    selectmode='extended')

listbox.grid(
    column=0,
    row=0,
    sticky='nwes'
)

# handle event
def items_selected(event):
    """ handle item selected event
    """
    # get selected indices
    selected_indices = listbox.curselection()
    # get selected items
    selected_langs = ",".join([listbox.get(i) for i in selected_indices])
    msg = f'You selected: {selected_langs}'

    showinfo(
        title='Information',
        message=msg)


listbox.bind('<>', items_selected)

root.mainloop()

运行结果如下:

第一步,创建一个包含编程语言列表的 StringVar

langs = ('Java', 'C#', 'C', 'C++', 'Python',
        'Go', 'Javascript', 'PHP', 'Swift')

langs_var = tk.StringVar(value=langs)

第二步,创建一个新的 Listbox 小部件并将 StringVar 对象分配给 list 变量:

listbox = tk.Listbox(
    root,
    listvariable=langs_var,
    height=6,
    selectmode='extended')

height显示六种编程语言,无需滚动。 selectmode=‘extended’ 允许多选。

第三步,定义一个在选择一个或多个项目时将调用的函数。 items_selected() 函数显示当前选定列表项的列表:

Listbox小部件最常用的选项列表如下:

listbox.bind('<>', items_selected)

最后,将 items_selected 函数与 ‘<>’ 事件绑定:

def items_selected(event):
    """ handle item selected event
    """
    # get selected indices
    selected_indices = listbox.curselection()
    # get selected items
    selected_langs = ",".join([listbox.get(i) for i in selected_indices])
    msg = f'You selected: {selected_langs}'

    showinfo(
        title='Information',
        message=msg)

以下代码演示了如何向列表框添加滚动条:

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo

# create the root window
root = tk.Tk()
root.geometry('200x100')
root.resizable(False, False)
root.title('Listbox')

root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

# create a list box
langs = ('Java', 'C#', 'C', 'C++', 'Python',
        'Go', 'Javascript', 'PHP', 'Swift')

langs_var = tk.StringVar(value=langs)

listbox = tk.Listbox(
    root,
    listvariable=langs_var,
    height=6,
    selectmode='extended')

listbox.grid(
    column=0,
    row=0,
    sticky='nwes'
)

# link a scrollbar to a list
scrollbar = ttk.Scrollbar(
    root,
    orient='vertical',
    command=listbox.yview
)

listbox['yscrollcommand'] = scrollbar.set

scrollbar.grid(
    column=1,
    row=0,
    sticky='ns')

# handle event


def items_selected(event):
    """ handle item selected event
    """
    # get selected indices
    selected_indices = listbox.curselection()
    # get selected items
    selected_langs = ",".join([listbox.get(i) for i in selected_indices])
    msg = f'You selected: {selected_langs}'

    showinfo(
        title='Information',
        message=msg)


listbox.bind('<>', items_selected)

root.mainloop()

6、Listbox常用参数及方法说明 6.1 常用构建参数

bg:在标签和指标后面,显示正常的背景颜色。bd:这表示指标周围的边框大小。它的默认值为两个像素。cursor:当鼠标移到Listbox上时,会出现一个光标,就是这个光标。font:这表示列表框中存在的文本的字体。fg:这表示列表框中文本的颜色。height:这表示列表框中的行数。行数的默认值为 10。highlightcolor:这表示焦点在小部件中时的焦点突出显示颜色。highlightthickness:这表示焦点高光厚度。relief:通过relief选择边框底纹效果为三维。浮雕的默认值为 SUNKEN。selectbackground:这表示在显示所选文本时要使用的背景颜色。selectmode:这指定可以选择的项目数,以及鼠标拖动对选择的影响Browse:这是默认设置。可以从列表框中选择一行。如果单击某个项目并将其拖动到其他行,则所选行将与鼠标一起移动。Single:只能选择一行,不能拖动鼠标;无论在何处单击按钮,都会选择相应的行。Multiple:一次可以选择的行数不固定。可以通过单击任何线及其切换来确定选择。Extended:一次可以选择的相邻组的行数不固定,通过单击第一行拖动最后一行来选择。width:这表示小部件中存在的字符的宽度。小部件的默认值为 20。xscrollcommand:链接到 Listbox 小部件的水平滚动条允许用户水平滚动 Listbox。yscrollcommand:链接到 Listbox 小部件的垂直滚动条允许用户垂直滚动 Listbox。 6.2 Listbox常用方法如下:

activate(index):选择作为参数传递的索引指定的行。curselection():从零开始的被选元素行号放入一个元组中,由curselection()方法返回。如果没有选择,则返回一个空元组。delete(first, last=None):使用此选项删除范围 [first, last] 中的索引。如果省略第二个参数,则删除具有第一个索引的单行。get(first, last=none):由从第一行到最后一行的索引包含在元组中并返回的文本组成的行。如果省略第一个参数,则返回与第一行相似的行的文本。index(i):Listbox 可见部分的位置使得小部件的顶部由索引为 i 的行组成。insert(index, *elements):多行插入到列表框中,将索引标记的行保持在所有行之上。如果要将新行添加到列表框的末尾,则必须使用 END 作为第一个参数。nearest(y):返回可见且最接近 y 坐标 Listbox 小部件的 y 相对值的行的索引。see(index):调整列表框的位置,使索引引用的行可见。size():返回列表框中的行数。xview():水平滚动条的命令选项设置为xview()方法,使Listbox可以水平滚动。xview_moveto(fraction):当 Listbox 滚动时,listbox 中最长行宽度的最左边部分出现在 Listbox 左侧之外。分数的范围是[0,1]。xview_scroll(number, what):该方法用于水平滚动Listbox。什么参数使用 UNITS,它相对于字符滚动或 PAGES,它相对于页面滚动列表框的宽度。 number 参数告诉滚动的次数。yview():垂直滚动条的命令选项设置为yview()方法,使Listbox可以垂直滚动。yview_moveto(fraction):当 Listbox 滚动时,Listbox 中最长行宽度的顶部部分出现在 Listbox 左侧之外。分数的范围是[0,1]。yview_scroll(number, what):该方法用于垂直滚动Listbox。哪个参数使用 UNITS(按字符滚动)或 PAGES(按列表框高度按页面滚动)。 number 参数告诉滚动多少。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783276.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号