Способ создания всплывающих окон в киви, всплывающее окно, похоже, привязано к окну, а не родительский объект, создавший всплывающее окно. Popup поставляется с self.dismiss(), чтобы закрыть всплывающее окно, но я не могу найти способ доступа к «родительскому» объекту, поскольку, несмотря на создание всплывающего окна, он, кажется, существует вне его.Доступ к родительскому окну kivy
Пример сниппеты:
class StartButton(ActionButton)
def on_release(self):
self.popup = StartPop(id='popid')
self.popup.open()
class StartPop(Popup):
def close(self):
self.dismiss()
def start(self):
print(self)
print(self.parent)
Результат команды печати является
<__main__.StartPop object at 0x00000000037BBCE0>
<kivy.core.window.window_sdl2.WindowSDL object at 0x000000000373B0B0>
Так, а не родитель будучи StartButton, родитель которого я хотел бы также ожидать, чтобы получить доступ и т.д. родитель является Окно.
Я не вижу, как я мог бы связывать любую функцию, которая таким образом взаимодействует с виджетами, которые я использовал для создания всплывающего окна. Мне нужно, чтобы родительский объект и его родители делали что-то на основе того, что я нажимаю на всплывающее окно, но я не могу понять, как это можно реализовать.
В .kv файле
<StartPop>:
title: 'Popup'
auto_dismiss: True
size_hint: None,None
size: 400,250
BoxLayout:
orientation: 'vertical'
Label:
text: 'sample text here'
text_size: self.size
halign: 'center'
valign: 'middle'
BoxLayout:
orientation: 'horizontal'
Button:
size_hint: 1,0.5
text: 'Cancel'
on_release: root.close()
Button:
size_hint: 1,0.5
text: 'Start Testing'
on_release: root.start()
Это имеет большой смысл. Я реализовал с kwargs через __init__, как было предложено, и это отлично работает, спасибо! – Daniel
@ Даниэль отмечает, что иногда 'kwargs.pop()' должно быть более полезным или безопасным, главным образом, если вы используете имена переменных, которые могли быть использованы в классе, который вы наследуете. Однако 'pop' возвращает' KeyError', когда такого ключа нет ('kwargs' - это просто словарь), поэтому ... зависит от вкуса/использования, которое я бы сказал. – KeyWeeUsr