2020年7月6日 / 4,512次阅读 / Last Modified 2020年7月6日
tkinter
好吧,不偷懒,虽然使用Combobox已经很久,但一直没有写文总结。这也是我总结的第一个来自ttk(tkinter themed widget)的控件。
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。
此时的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函数,跟大多数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函数,我自己的使用感觉,应该是设置一个初始的默认值,这个值并不会因为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()
代码运行效果如下:
cb.bind("<<ComboboxSelected>>", event_funciton)
关于ttk.Combobox,就总结这么多吧,应该够用了。
-- EOF --
本文链接:https://www.pynote.net/archives/2145
前一篇:tk.Listbox的用法
后一篇:用openpyxl合并xlsx表格cell
©Copyright 麦新杰 Since 2019 Python笔记