Заставьте PySimple GUI Radio Buttons генерировать события - PullRequest
0 голосов
/ 25 марта 2020

Раньше для создания переключателя с виджетами Matplotlib и вывода имени нажатой кнопки на терминал я делал это:

import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons

def update(val):
    print(rb.value_selected)
    fig.canvas.draw_idle()

fig, ax = plt.subplots(1, 1)
ax = plt.axes([0.5, 0.4, 0.1, 0.15], facecolor='gray')
rb = RadioButtons(ax,  ('pi', '42'), active=0)
rb.on_clicked(update)
plt.show()

Matplotlib Widget RadioButtons

Изменение чего-либо на переключателе всегда генерирует событие .

Глядя на пример в этот ответ кажется, что мне нужно также включить дополнительный * Кнопка 1015 *; видимый внешний вид переключателей может отличаться от того, что, по мнению моего сценария, хочет пользователь, пока пользователь не нажмет Read. Кажется, что манипулирование переключателями не создает событие. Затем вы должны нажать sh вторую кнопку, которая говорит Эй! Я принял решение, теперь взгляните!

PySimpleGUI Radio Buttons

import PySimpleGUI as sg

layout = [[sg.Radio('pi', 'num', default=True) ,
           sg.Radio('42', 'num')],
          [sg.Button('Read')]]

window = sg.Window('Radio Button Example', layout)

while True:             # Event Loop
    event, values = window.Read()
    if event in (None, 'Cancel'):
        break
    print(event, values)

window.close()

Этот комментарий говорит

Я думаю, что вы нажали или ошибка, или Radio Buttons enable_events не реализованы. Я думал, что это было, но может не быть на Qt. Я сделаю это приоритетом и посмотрю на код.

, что заставляет меня думать, что должен быть способ генерировать событие в PySimple GUI, когда переключатель переключается без необходимости отдельной кнопки, но я не могу понять, есть ли равен единице.

Вопрос: Есть ли способ для кнопок PySimple GUI Radio генерировать события при изменении?

1 Ответ

1 голос
/ 25 марта 2020

Генерация событий, когда что-то меняется, задается параметром enable_events. Документировано здесь: https://pysimplegui.readthedocs.io/en/latest/#radio -элемент

Пример попробовать. Работает и для PySimpleGUIQt.

import PySimpleGUI as sg

layout = [  [sg.Text('Radio Button Events')],
            [sg.Radio('1', 1, enable_events=True, key='R1'), sg.Radio('2',1, enable_events=True, key='R2')],
            [sg.Button('Go'), sg.Button('Exit')]  ]

window = sg.Window('Window Title', layout)

while True:             # Event Loop
    event, values = window.read()
    print(event, values)
    if event in (None, 'Exit'):
        break
window.close()

...