PySimpleGui - получить текст кнопки

Я разрабатываю приложение с использованием PySimpleGui, которое будет назначать текст кнопки из списка. Текст на кнопке (ах) будет изменяться пользователями в процессе поиска. Я хочу иметь возможность читать, печатать и назначать текст кнопки при нажатии кнопки. Как мне это сделать? Вот код. Я пробовал несколько вещей, но безрезультатно. Два оператора печати в конце кода - это остатки.

import PySimpleGUI as sg

selection_button_text_data = ['Like a Rolling Stone','Bob Dylan','The Sound of Silence','Simon & Garfunkel','Respect','Aretha Franklin','A Day In The Life','The Beatles']

layout =[
    [
        [sg.Button(selection_button_text_data[0])],
        [sg.Button(selection_button_text_data[1])],
        [sg.Button(selection_button_text_data[2])],
        [sg.Button(selection_button_text_data[3])]
    ]
        ]
window = sg.Window('Window Title', layout)
event, values = window.read()
window.close()
print(values)
print(sg.Button.GetText())

person Brad Fortner    schedule 07.12.2020    source источник
comment
Хотите обновлять кнопки на лету?   -  person Alderven    schedule 07.12.2020
comment
Альдервен: Да, верю.   -  person Brad Fortner    schedule 07.12.2020


Ответы (1)


В вашем случае лучше давать каждый ключ для каждой кнопки, тогда вы получите событие, такое же, как и ключ нажатой кнопки. По окну [клавиша] вы можете получить элемент и применить метод get_text() для получения текста кнопки.

import PySimpleGUI as sg

selection_button_text_data = [
    'Like a Rolling Stone',
    'Bob Dylan',
    'The Sound of Silence',
    'Simon & Garfunkel',
    'Respect',
    'Aretha Franklin',
    'A Day In The Life','The Beatles',
]

layout =[
    [sg.Button(selection_button_text_data[i], key=f'BTN{i}')] for i in range(4)
]
window = sg.Window('Window Title', layout)
event, values = window.read()
if event != sg.WINDOW_CLOSED:
    print(window[event].get_text())
window.close()
The Sound of Silence
person Jason Yang    schedule 07.12.2020
comment
Спасибо, Джейсон - Это меня начало. Как и одна строка кода, которая создает несколько кнопок. Оценил ... А теперь посмотрим, побегу ли я с ним! :) .... бред .... - person Brad Fortner; 07.12.2020