У меня есть кнопка Connect
и кнопка Disconnect
в main.py
.
Кнопка Connect
включена, а кнопка Disconnect
отключена.Когда я нажимаю кнопку Connect
, вызывается лямбда-выражение, которое переключает соединение устройства (toggle_device_connection
) в другом классе Modbus
в другом файле modbus.py
.У меня есть другое лямбда-выражение сразу после него, которое отключит кнопку «Подключить» и активирует кнопку Disconnect
и наоборот (toggle_buttons
).
Проблема заключается в том, что всякий раз, когда соединение в 1-м лямбда-выражении вызываетисключение (например, соединение было неудачным), оно все равно будет переключать кнопку с включенного на отключенное, что нежелательно.
Пример кода:
modbus = modbus class
connect_button = Button(parent, text='Connect', command= lambda: (modbus.toggle_device_connection(state=1),
toggle_buttons(state=1)))
disconnect_button = Button(parent, text='Disconnect', command= lambda: (modbus.toggle_device_connection(state=0),
toggle_buttons(state=0)))
Вопрос: как мнепереносить данные из одного класса в другой?(в данном конкретном примере)
ОТВЕТ
Я думаю, что мой ответ следующий:
# Main.py
self.modbus = Modbus()
connect_button = Button(parent, text='Connect', command= lambda: modbus.toggle_device_connection(state=True)
def toggle_buttons(self, state=False):
if state:
# Disable Connect
# Enable Disconnect
else:
# Enable Connect
# Disable Disconnect
self.modbus.device_connection = lambda bool: toggle_buttons(state=bool)
# Modbus.py
self.device_connection = lambda bool: 'Connection unsuccessful'
def toggle_device_connection(self):
...
if success:
return True
else:
return False
...