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

#python #user-interface #pysimplegui

#питон #пользовательский интерфейс #pysimplegui

Вопрос:

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

 import PySimpleGUI as sg

selection_button_text_data = ['Like a Rolling Stone','Bob Dylan','The Sound of Silence','Simon amp; 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())
 

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

1. Вы хотите обновлять кнопки на лету?

2. Алдервен, Да, я знаю.

Ответ №1:

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

 import PySimpleGUI as sg

selection_button_text_data = [
    'Like a Rolling Stone',
    'Bob Dylan',
    'The Sound of Silence',
    'Simon amp; 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
 

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

1. Спасибо, Джейсон, это заставляет меня начать. Как и одна строка кода, которая создает несколько кнопок. Приветствуется… Теперь давайте посмотрим, справлюсь ли я с этим! 🙂 …. бред….