Причина, по которой он не сохраняет статус виджета, заключается в том, что вы создаете новый виджет в каждый момент , поэтому решение заключается в повторном использовании .С другой стороны, избегайте использования глобальных переменных, потому что они могут вызвать проблемы, в тех случаях, когда они должны использоваться.Учитывая вышеизложенное, решение выглядит следующим образом:
class MyApp(App):
def build(self):
box = BoxLayout(orientation = "horizontal")
box.add_widget(Switch(active = True))
# a single popup is created
self.popup = Popup(content = box, auto_dismiss = True, size_hint = (None, None), size = (Window.width/1.5, Window.width/1.5))
self.root = SM()
return self.root
def option_menu_function(self):
self.popup.open()