#python #user-interface #pysimplegui
Вопрос:
Я использую PySimpleGUI, и я хочу иметь возможность нажать на кнопку, чтобы она отображалась в тексте под кнопкой в качестве выделения. Варианты заключаются в разделении или заполнении данных, но я не могу понять, как заставить обработчик событий обновить текст или сохранить эту опцию, а затем заставить код действовать соответствующим образом на основе этой опции.
Код до сих пор выглядит примерно так
import PySimpleGUI as sg
layout = [
[sg.Text('Would you like to SPLIT or SPLIT AND DATA POPULATE')],
[sg.Button('Split', key='-SPLIT-'), sg.Button('Split and Populate', key ='-SANDP-')],
[sg.Text('Current Process:'), sg.Text('Process', key='-PROCESS-')]
]
window = sg.Window('Title', layout,size=(1000,500))
while True:
event, values = window.read()
if event is None or event == 'EXIT':
break
if event == '-SPLIT-':
window['-PROCESS-'].update(values("-SPLIT-"))
choice1 = window['-PROCESS-'].update("split")
if event == '-Split and Populate-':
window['-PROCESS-'].update("Split and Populate")
choice2 = window['-PROCESS-'].update("Split and Populate")
window.close()
#psuedo code following
if choice1
bla bla bla
if choice2
bla bla bla
Я хочу, чтобы можно было нажать и сохранить это имя кнопки в choice1 или choice 2, а также чтобы это имя кнопки отображалось в графическом интерфейсе, возможно ли это?
Ответ №1:
Ключ будет параметром button_text
sg.Button
if key
или k
не указан и не дублируется, поэтому нет события для » — Разделить и заполнить-«.
В большинстве случаев значение a sg.Button
не изменится, поэтому это не будут данные values
из sg.Window().read
. Чтобы получить текст sg.Button
, вы можете вызвать метод get_text
sg.Button
.
Для события, сгенерированного из ключа элемента при нажатии на sg.Button
или другой элемент, затем решите, что делать в if ... elif ... else ...
инструкции.
import PySimpleGUI as sg
layout = [
[sg.Text('Would you like to SPLIT or SPLIT AND DATA POPULATE')],
[sg.Button('Split', key='-SPLIT-'),
sg.Button('Split and Populate', key ='-SANDP-')],
[sg.Text('Current Process:'),
sg.Text('Process', size=(0, 1), key='-PROCESS-')]
]
window = sg.Window('Title', layout, size=(1000,500))
while True:
event, values = window.read()
if event is None or event == 'EXIT':
break
elif event in ('-SPLIT-', '-SANDP-'):
window['-PROCESS-'].update(value=window[event].get_text())
if event == '-SPLIT-':
pass
elif event == '-SANDP-':
pass
window.close()