fonction lambda associée à un bouton de menu
Bonjour
J'ai actuellement des boutons de menu qui lorsqu'ils sont sélectionnés déclenchent l'affichage d'une boite de dialogue pour la mise modification d'une variable.
Exemple
Code:
serial_port_menu.add_command(label='Choose baud rate... ', command=choose_baud_rate)
avec la fonction appelée
Code:
1 2 3 4 5 6 7 8 9 10
| def choose_baud_rate():
"""
Ask for and return a new baud rate speed
"""
global baud_rate
baud_rate = int(ask_for_value(
title_text='Choose baudrate speed.',
message='Specify the baud rate value.',
initial_value=baud_rate))
print(f'New baud rate is : {baud_rate}') |
Ca fonctionne, mais le fait de devoir mettre la variable baud_rate en global ne me plait pas.
Je souhaitais donc modifier cela en
Code:
1 2 3 4 5 6 7 8 9 10
| def choose_baud_rate(actual_baud_rate):
"""
Ask for and return a new baud rate speed
"""
newBaudRate = int(ask_for_value(
title_text='Choose baudrate speed.',
message='Specify the baud rate value.',
initial_value=actual_baud_rate))
print(f'New baud rate is : {newBaudRate}')
return newBaudRate |
et réaliser l'appel par une fonction lambda directement au niveau du bouton
Code:
serial_port_menu.add_command(label='Choose baud rate... ', command=lambda: baud_rate = choose_baud_rate(actual_baud_rate=baud_rate))
Vous voyez l'idée ?...
Le problème c'est que je ne comprend pas comment rédiger la fonction lambda pour lui faire exécuter baud_rate = choose_baud_rate(actual_baud_rate=baud_rate)) pour qu'elle exécute choose_baud_rate et assigne la valeur retournée à baud_rate