Advertisement

Python tkinter -- 第15章 Combobox

阅读量:

第15章 Combobox

15.1 属性

属性 描述
class_ 设置创建的Combobox实例的名字
cursor 鼠标位于Combobox的形状
exportselection 决定是否可以复制选中的文本内容。如果exportselection=True,表示可以。exportselection=False,表示不可复制列表框中选中的选项
height 下拉列表的行数。默认值是20
justify 输入框中的对齐方式。
postcommand 下拉列表弹出前的回调函数。用于动态改变下拉列表内容。
takefocus 能够使用Tab获得输入焦点
values 设置下拉列表的值
width 定义输入框的宽度。默认值是20。下拉箭头的宽度是固定的,不可调整。
15.1.1 class_
设置创建的Combobox的名字。这个名字只能在创建实例的时候赋值,不能动态更改。
15.1.2 cursor
鼠标位于Combobox控件时的形状。具体的关于cursor的介绍见3.3.6节。不过此属性对combobox不起作用,鼠标的形状不会发生改变。
15.1.3 exportselection
决定是否可以复制选中的文本内容。如果exportselection=True,表示可以。exportselection=False,表示不可复制选中的选项。不过此属性对于Combobox控件不起作用。
15.1.4 height
确定下拉列表的行数或者项目数。默认值是20,如果超过这个默认值,会自动出现滚动条。如果项目数没有到height设定的值,会显示实际的行数。也就是说不会出现空白行,比如行数是10,就不会出现10个待选项+10个空白行的情况,下拉列表只显示10个待选项。
复制代码
    import tkinter as tk
    from tkinter import ttk
    root=tk.Tk()
    root.geometry('320x240')
    
    b1=ttk.Combobox(root,height=3,
                values=('1','2','3','4','5','6'))
    b1.pack()
    root.mainloop()

结果:

在这里插入图片描述

15.1.5 justify
设置窗口的文字排列方式仅在文本长度小于该窗口宽度时生效。默认采用左端对齐策略(tk.LEFT)。另外两种配置模式分别为居中排列(tk.CENTER)和右端对齐策略(tk.RIGHT)。

复制代码
    import tkinter as tk
    from tkinter import ttk
    root=tk.Tk()
    root.geometry('320x240')
    
    b1=ttk.Combobox(root,justify=tk.RIGHT,
                values=('1','2','3','4','5','6'))
    b1.pack()
    root.mainloop()

结果:

在这里插入图片描述

15.1.6 postcommand 指定下拉列表弹出前触发的回调函数,并以实现动态更新下拉列表内容为目标

复制代码
    import tkinter as tk
    from tkinter import ttk
    
    root=tk.Tk()
    root.geometry('320x240')
    b2=tk.Entry(root)
    def change():
    b1['values']=b2.get().split(';')
    b1=ttk.Combobox(root,postcommand=change)
    b1.pack()
    b2.pack()
    root.mainloop()

结果:

在这里插入图片描述
在这里插入图片描述

该回调函数负责将输入框中的字符串分割,并根据结果动态更新下拉列表的内容。

15.1.11 width
指定输入框的宽度,默认设置为20个单位。特别提示的是,请确保仅调整输入字段本身的宽度参数,并不要试图修改下拉按钮的相关属性。当计算整个下拉框控件所需的宽度时,请将这两个数值进行求和运算。
方法 15.2

方法 描述

current(newindex=None)
(1)根据指定的新索引newindex调用相关功能并将其结果作为当前显示内容更新到输入字段中。
(2)当有特定新索引newindex时,在当前显示的内容基础上搜索与之匹配的具体下拉列表选项,并将搜索结果作为当前显示内容更新到输入字段中;若未找到匹配结果则会隐式地排除所有选项。
set(value):设置当前显示的内容为指定的新值。
current 方法的功能:
(1)无参数情况:在当前显示的内容基础上搜索与之匹配的具体下拉列表选项并将其搜索结果作为当前显示内容更新到输入字段中;若未找到匹配结果则会隐式地排除所有选项。
(2)有特定新索引newindex时,在当前显示的内容基础上搜索与之匹配的具体下拉列表选项并将搜索结果作为当前显示内容更新到输人字段中;若未找到匹配结果则会隐式地排除所有选项。
set(value):设置当前显示的内容为指定的新值。

复制代码
    import tkinter as tk
    from tkinter import ttk
    
    root=tk.Tk()
    root.geometry('320x240')
    b1=ttk.Combobox(root,value=('1','2','3','4','5'))
    b1.pack()
    b3=tk.Label(root,text='结果:')
    def current():
    b3['text']='结果:'+str(b1.current())
    
    b2=tk.Button(root,text='Current',command=current)
    b2.pack()
    b3.pack()
    root.mainloop()

结果:

在这里插入图片描述

如果将 b3['text'] = '结果:' + str(b1.current()) 修改为 b3['text'] = '结果:' + str(b1.current(newindex=2)) ,可以看到,在下拉框控件中的输入框内容修改为下拉列表的第三项。

在这里插入图片描述

15.2.2 set(value) 设置输入字段的内容并赋予指定值的功能。当函数被调用后会将参数指定的值赋值给当前输入字段并显示出来。特别地请关注的是此处所指的value参数并不局限于列表中提供的选项因此具有更大的灵活性和适用性

复制代码
    import tkinter as tk
    from tkinter import ttk
    
    root=tk.Tk()
    root.geometry('320x240')
    b1=ttk.Combobox(root,value=('1','2','3'))
    b1.pack()
    def set1():
    b1.set('3')
    b2=tk.Button(root,text='Set',command=set1)
    b2.pack()
    root.mainloop()

全部评论 (0)

还没有任何评论哟~