Чтобы ответить на ваш вопрос, да, это самоанализ фрейма.
Но синтаксис, который я бы создал, чтобы сделать то же самое,
with gui.vertical:
text = gui.label('hello!')
items = gui.selection(['one', 'two', 'three'])
@gui.button('click me!')
class button:
def on_click():
text.value = items.value
text.foreground = red
Здесь я бы реализовал gui.button
в качестве декоратора, который возвращает экземпляр кнопки с учетом некоторых параметров и событий (хотя теперь мне кажется, что button = gui.button('click me!', mybutton_onclick
тоже подойдет).
Я бы также оставил gui.vertical
без изменений, поскольку он может быть реализован без самоанализа. Я не уверен насчет его реализации, но он может включать установку gui.direction = gui.VERTICAL
, чтобы gui.label()
и другие использовали его для вычисления своих координат.
Теперь, когда я смотрю на это, я думаю, что я попробую синтаксис:
with gui.vertical:
text = gui.label('hello!')
items = gui.selection(['one', 'two', 'three'])
@gui.button('click me!')
def button():
text.value = items.value
foreground = red
(идея заключается в том, что аналогично тому, как метка состоит из текста, кнопка состоит из текста и функции)