#python #user-interface #pysimplegui
Вопрос:
Я создаю простой графический интерфейс для своего скрипта python с помощью PySimpleGui и сталкиваюсь с проблемой. Каждый раз, когда я хочу добавить новое целое число в свой список InputCombo, я не могу получить доступ к новому целому числу.
Я написал базовый сценарий, чтобы показать:
import PySimpleGUI as sg
things=["a","b"]
layout=[[sg.Input(key="-input-",size=(10,1)),sg.Button("add",key="-add-")],
[sg.InputCombo(things,key="-combo-"),sg.Button("write")],
[sg.Text("",key="-output-"),sg.Button("Quit")]]
window=sg.Window("Name",layout,size=(200,200))
while True:
event,values=window.read()
if event==sg.WINDOW_CLOSED or event=="Quit":
break
if event=="add":
things.append(values["-input"])
if event=="write":
window["-output-"].update(values["-combo-"])
У меня есть список «вещей». Я могу добавить новое значение, если напишу что-то в поле ввода. С помощью кнопки «добавить» я добавляю значение в свой список «вещи». С помощью InputCombo я могу получить доступ к значениям v в моем списке, например «a» и «b». Если я выберу «a» или «b» и нажму «написать», текстовое поле обновится и напишет «a» или «b». Но в InputCombo я не могу выбрать значения, которые я добавил позже.
У кого-нибудь есть идеи, как я могу заставить все работать?
Комментарии:
1. Кнопка
add
просто добавляет новый элемент в списокthings
, а не вsg.InputCombo
него . Вам нужно обновитьsg.InputCombo
с помощью опцииvalues=things
.event=="add"
это неправильно, должно бытьevent=="-add-"
потому, что вы установили клавишу кнопкиadd
как » — добавить-«.2. Спасибо за ваш ответ. Но я этого не понимаю. Я относительно новичок в PySImpleGui. Я переоделся
add
в-add-
.3. Ответил в ответ.
Ответ №1:
Вызовите метод update(values=things)
sg.InputCombo
для обновления новых значений.
Пересмотренный кодекс,
import PySimpleGUI as sg
things = ["a","b"]
layout = [
[sg.Input(key="-input-", size=(10,1)),
sg.Button("add", key="-add-")],
[sg.InputCombo(things, key="-combo-"),
sg.Button("write")],
[sg.Text("", key="-output-"),
sg.Button("Quit")],
]
window = sg.Window("Name", layout, size=(200, 200))
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED or event == "Quit":
break
elif event == "-add-": # Correct event to add
things.append(values["-input-"])
window['-combo-'].update(values=things) # Statement to update
elif event == "write":
window["-output-"].update(values["-combo-"])
window.close()