输入框和下拉菜单的一个组合部件,
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()