我正在使用 pysimplegui 并具有在组合框中给出结果的搜索功能。 有没有办法点击一个结果并让它用该结果填充表单以进行编辑。 我在 stackoverflow 帖子中找到了 combo.bind 和 combo.Widget.event_generate 片段。 我查看了 pysimplegui.org 中的表格部分,但找不到我要找的东西。我看了一些 youtube 视频,但仍然不开心。 有没有我可以使用但我似乎找不到的功能或方法。 如果有人能指出我正确的方向,我将不胜感激,谢谢,伊恩
combo = window['-SEARCH-']
combo.bind("<Return>","_Enter")
while True:
event, values = window.read() #values is a list in Python
if event == '-SEARCH-' + '_Enter':
surnames = retrieve_info(values,window)
if len(surnames) > 0:
window['-SEARCH-'].update(values=surnames, value=values['-SEARCH-'])
combo.Widget.event_generate('<Button-1>')
这是我的 retireve_info 函数
def retrieve_info(values,window):
surnames = []
if values['-SEARCH-'] == '':
sg.PopupError('Please enter a valid surname')
else:
sSql = "SELECT SURNAME FROM PATIENT WHERE SURNAME like '%" + values['-SEARCH-'] + "%';"
conn = create_connection(database)
c = conn.cursor()
c.execute(sSql)
records = c.fetchall()
for record in records:
surnames.append(record[0])
conn.commit()
conn.close()
return surnames
看看我的应用程序 一旦我选择了一个人,我就会寻找他们的信息来填充表格,这样我就可以在更新之前对其进行编辑。
你错过了什么——当你更新 GUI 小部件时,GUI 不会立即更新。
尝试在它之后和
window.refresh()
之前调用combo.Widget.event_generate('<Button-1>')
。
import PySimpleGUI as sg
layout = [
[sg.Combo([1,2,3,4,5], key='COMBO')],
[sg.Button("Check")],
]
window = sg.Window('Title', layout)
while True:
event,values = window.read()
if event == sg.WIN_CLOSED:
break
elif event == 'Check':
window['COMBO'].update(values=["A", "B", "C", "D", "E"])
window.refresh()
window['COMBO'].widget.event_generate('<Button-1>')
window.close()