输入框和下拉菜单的一个组合部件, sg.Combo() or sg.InputCombo() OR sg.DropDown() or sg.Drop()
Combo(
values,
#list[any] or tuple[Any]
#显示下拉菜单信息,列表或者元祖
default_value=None,
#initial value
#默认选中
key=None,
#元素的唯一标识符
#书写规范'-COMBO-'
enable_events=False,
#元素的事件属性
#如果设定为True,元素列表项目被选中时会发生事件
size=(None, None),
# 设置元素尺寸(宽,高)
disabled=False,
# bool:元素禁用
# 为Ture时元素禁用,无法点击
auto_size_text=None,
# bool 元素自动根据内容大小调整
font=None,
# 字体名称,字体大小(‘黑体’,16)
background_color=None,
#str 设置背景颜色
text_color=None,
#str 设置文本颜色
tooltip=None,
#悬浮文本
readonly=False,
#元素只读属性,只能选择,不能输入
pad=None,
# (int,int)or((int,int),(int,int))
# or (int,(int,int))or ((int.int),int)
# ((左,右),(上,下))or ((左/右),(上,下))or((左,右),(上/下))
visible=True
#元素的可见状态
#如果设置为False,则元素不可见
)
和listbox最大的区别在于,可以输入,但是不能多选。ListBox取得的值是 存放在列表里面的,而Combo取得的值是对象本身 元素可以更新的属性只有以下几种: window[key].update()
update(
value=None,
#更新默认选中的选项
values=None,
#更新显示的所有下拉菜单文本
disabled=False,
# bool:元素禁用
# 为Ture时元素禁用,无法点击
set_to_index=None,
#高亮显示设定的索引,Union[int,list,tuple],举例如下
#set_to_index =1
# set_to_index =[1,2]
# set_to_index =(1,2)
#注意::单击只是高亮显示,并未选中,双击才是高亮显示+选中
#单击获取值时,不用valuse(key),而是用window[key].get()
font=None,
#(‘宋体’,11)(字体名称,字号)
readonly=None,
#BOOL 只读属性
visible=None,
#bool 更新元素的可见性
)
小练习
使用Combo完成listbox一样的练习
import PySimpleGUI as sg
accounts={
'账号1':"TYEGFVFGSDFH999",
'账号2':"SADFSFA23SDF333",
'账号3':"R43TWERWR3RFEWE",
'账号4':"FSGSGWEGW442TRR",
'账号5':"BYHKJTLLTREGEG4",
'账号6':"9U34NSMFNSDASKF",
'账号7':"0934JH234H523UH"
}
list_zh =[]
for i in accounts:
list_zh.append(i)
layout = [
[sg.Combo(list_zh,default_value='账号1',enable_events=True,size=(30,3))],
[sg.T('密码:'),sg.In(size=(25,1),key='-PW-')]
]
window = sg.Window('Window Title', layout)
while True:
event, values = window.read()
if event == None:
break
if event==0:
window['-PW-'].SetFocus()
window['-PW-'].update(accounts[values[0]])
window['-PW-'].update(select=True)
window.close()