Изменение цвета фона полей ввода в PySimpleGUI

#python #pysimplegui

Вопрос:

У меня есть следующий код:

 import PySimpleGUI as sg
import datetime
from datetime import date

columns = ["TYPE","DIRECTION","DATE","OPTION"]
param = (20,3) # size of the main window

def GUI():
    sg.theme('Dark Brown 1')
    listing = [sg.Text(u, size = param) for u in columns]
    core = [
    sg.Listbox(['In Book', 'New Trade', 'Old Book'],enable_events=False,key='TYPE', background_color='red', size = (20,1)),
    sg.Input(size = param),
    sg.Input(size = param),
    sg.Input(size = param, key='OPTION')]

    mesh = [[x,y] for (x,y) in list(zip(listing, core))]
    layout =[[sg.Button("SEND")]]  mesh
    window = sg.Window('Trade Entry System', layout, font='Courier 12').Finalize()
    while True:
        event, values = window.read()
        if event == sg.WINDOW_CLOSED:
            break
        elif event == "SEND":
            break
        elif event == "TYPE":
            if values[event] == 'In Book':
                window["OPTION"].update(background_color='red')
        else:
            print("OVER")
    window.close()
GUI()

 

Я пытаюсь найти способ сказать это: если выбран текст «В книге» в списке, то поле ввода рядом с опцией теперь должно иметь красный цвет фона.

Ответ №1:

Проверьте , находится ли содержимое списка TYPE ['EQUITY'] в цикле событий, когда событие происходит из списка TYPE , затем вызовите метод update ввода OPTION с опцией background='red' .

 import PySimpleGUI as sg
import datetime
from datetime import date

columns = ["TYPE","DIRECTION","DATE","OPTION"]
param = (20,3) # size of the main window

def GUI():
    sg.theme('Dark Brown 1')
    listing = [sg.Text(u, size = param) for u in columns]
    core = [
    sg.Listbox(['In Book', 'New Trade', 'Old Book'], enable_events=True, key='TYPE', background_color='red', size = (20,3)),
    sg.Input(size = param),
    sg.Input(size = param),
    sg.Input(size = param, key='OPTION')]

    mesh = [[x,y] for (x,y) in list(zip(listing, core))]
    layout =[[sg.Button("SEND")]]  mesh
    window = sg.Window('Trade Entry System', layout, font='Courier 12').Finalize()
    while True:
        event, values = window.read()
        if event == sg.WINDOW_CLOSED:
            break
        elif event == "SEND":
            break
        elif event == "TYPE":
            if values[event] == ['In Book']:
                window["OPTION"].update(background_color='red')
            else:
                window["OPTION"].update(background_color=sg.theme_input_background_color())
        else:
            print("OVER")
    window.close()
GUI()
 

Комментарии:

1. Я внес некоторые правки в вопрос, любая помощь была бы отличной.

2. «поле ввода рядом с ОПЦИЕЙ» ? ОПЦИЯ-это последнее поле ввода … Обновите код, как указано выше, если для ПАРАМЕТРА поле ввода.