PySimpleGUI как прослушать событие с Raspberry Pi

#python #raspberry-pi #pysimplegui

Вопрос:

я совсем новичок в python и PySimpleGUI.

Итак, я получил код ниже, который работает нормально. Следующим шагом я хочу заменить триггер elif «ОТЛАДКА» в событии: (что выполняется кнопкой) на событие прослушивания, исходящее от raspberry pi.

Я знаю, как отправлять переменные из моего PI (с красным узлом), используя sys.argv[2]. Но я не знаю, как запустить elif со значением из моего PI.

Спасибо

 # from datetime import date
# from datetime import datetime
import sys
import PySimpleGUI as sg

# today = date.today()
# today_date = today.strftime("%d/%m/%Y")
# today_weekday = today.strftime("%A")
# now = datetime.now()
# current_time = now.strftime("%H:%M:%S")

sg.theme('DarkGrey')  # Add a touch of color
# All the stuff inside your window.
layout = [
    [sg.Column([[sg.T('')], [sg.Text('Some Name', font=('Helvetica', 15))]], justification='center'), ],
    [sg.Column([[sg.Button('EXIT', key='_EXIT_')]], justification='center'), ],
    [sg.Column([[sg.T('')],
                [sg.Image('/home/pi/Desktop/Present_Card.png', key='_homescreen_image_', )]],
               justification='center', visible=True), ],

    [sg.Column([[sg.Text('', key='_customer-name-text_', font=('Helvetica', 20))]], justification='center',
               visible=True), ],
    [sg.Column([[sg.Text('Please Present Card', key='_present-card-text_', font=('Helvetica', 20))]],
               justification='center', visible=True), ],
    [sg.Column([[sg.Text('Another Name', font=('Helvetica', 8))]], justification='center'), ],

    [sg.Column([[sg.Button('DEBUG', key='_DEBUG_')]], justification='center'), ],

]

window = sg.Window('Window', layout, no_titlebar=True, location=(0,0), size=(800,500), keep_on_top=True)


# Event Loop to process "events" and get the "values" of the inputs
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event== '_EXIT_':  # if user closes window or clicks cancel
        break

    elif '_DEBUG_' in event:

        try:
            customer_balance = sys.argv[3]
        except IndexError:
            customer_balance = '0'

        try:
            customer_name = sys.argv[2]
        except IndexError:
            customer_name = 'Hello Mr Doe'

        window['_homescreen_image_'].update(visible=False)
        window['_customer-name-text_'].update(customer_name)
        window['_present-card-text_'].update('Your Balance: '   customer_balance   ' 


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

1. Мне неясно, как "передавать значения с помощью sys.argv", потому что, насколько я знаю, эти аргументы передаются при первоначальном запуске программы. Я не знал, что с их помощью можно передавать аргументы в работающую программу. Это что, узловатая штука?

2. Запустите другой поток для прослушивания события с raspberry pi, затем сгенерируйте событие методом вызова write_event_value(key, value) sg.Window , например window.write_event_value('_DEBUG_', value) .

)

window.close()

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

1. Мне неясно, как «передавать значения с помощью sys.argv», потому что, насколько я знаю, эти аргументы передаются при первоначальном запуске программы. Я не знал, что с их помощью можно передавать аргументы в работающую программу. Это что, узловатая штука?

2. Запустите другой поток для прослушивания события с raspberry pi, затем сгенерируйте событие методом вызова write_event_value(key, value) sg.Window , например window.write_event_value('_DEBUG_', value) .