ttk.Combobox的用法

2020年7月6日 / 163次阅读 / Last Modified 2020年7月6日
tkinter

好吧,不偷懒,虽然使用Combobox已经很久,但一直没有写文总结。这也是我总结的第一个来自ttk(tkinter themed widget)的控件。

创建ttk.Combobox

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
cb = ttk.Combobox(root)
cb.pack()

root.mainloop()

注意引用ttk模块的方式,一般都是from tkinter import ttk

以上代码创建一个什么具体都没有的Combobox。

添加数据

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
cb = ttk.Combobox(root)
cb.pack()

cb_value = ('maixj.net', 'pynote.net',
                       'abcde', '12345')
cb['value'] = cb_value

root.mainloop()

cb['value']就是一个tuple。

向ttk.Combobox中添加数据
向ttk.Combobox中添加数据

此时的Combobox,除了可以在下拉列表中选择数据,还可以手动填入数据。很多时候我们都要限制用户的输入,此时可以设置Combobox为只读。

只读Combobox

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
cb = ttk.Combobox(root, state='readonly')
cb.pack()
cb['value'] = ('maixj.net', 'pynote.net', 'abcde', '12345')

root.mainloop()

readonly的感觉好多了!

get函数获取Combobox中的数据

直接用get函数,跟大多数tk控件一样:

import tkinter as tk
from tkinter import ttk

def _get():
    lb['text'] = str(cb.get())

root = tk.Tk()
cb = ttk.Combobox(root, state='readonly')
cb.pack()
cb['value'] = ('maixj.net', 'pynote.net', 'abcde', '12345')

lb = tk.Label(root, text='')
lb.pack()
bt = tk.Button(root, text='test get', command=_get)
bt.pack()

root.mainloop()

请大家自行测试运行,以上代码在cb.get()周围包裹str函数,是考虑到初始状态下,用户什么都没有选择,Combobox中的值为None。

有get,一般都有set。

Combobox的set函数(默认值)

Combobox的set函数,我自己的使用感觉,应该是设置一个初始的默认值,这个值并不会因为set函数,而出现在下拉列表中,下拉列表的值还是由value属性控制。

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
cb = ttk.Combobox(root, state='readonly')
cb.pack()
cb['value'] = ('maixj.net', 'pynote.net', 'abcde', '12345')
cb.set('default value')

root.mainloop()

代码运行效果如下:

给ttk.Combobox设置默认值
给ttk.Combobox设置默认值

绑定事件

cb.bind("<<ComboboxSelected>>", event_funciton)

关于ttk.Combobox,就总结这么多吧,应该够用了。

-- EOF --

本文链接:https://www.pynote.net/archives/2145

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top