Как показать признаки объекта, когда он вызывается из другого фрагмента кода в качестве экземпляра

Я только начинаю работать с TraitsUI и являюсь начинающим программистом на Python. Я надеюсь, что этот вопрос не слишком низкого уровня.

Я хочу отобразить кнопку, настроенную в ControlPanel, вызвав ее из Main. Когда я делаю следующее, я просто окно с кнопкой, которая говорит "Панель". Если я нажму эту кнопку, я получу другое окно с кнопкой «Пуск», которую хочу. Как мне просто получить окно с кнопкой «Пуск»?

Спасибо, Космо

Главный:

from enthought.traits.api import *
from enthought.traits.ui.api import *

class ControlPanel(HasTraits):
    """ This object is the core of the traitsUI interface. It hosts the method for
    interaction between the objects and the GUI.
    """

    start = Button("Start Measurements") 
    view = View(Item('start', show_label=False, style='custom' )) 

class MainWindow(HasTraits):
 """ The main window, here go the instructions to create and destroy the application. """

    panel = Instance(ControlPanel)
    def _panel_default(self):
        return ControlPanel()
    view = View(Item('panel'))

if __name__ == '__main__':
    MainWindow().configure_traits() 

person DanG    schedule 31.10.2013    source источник


Ответы (1)


В MainWindow измените это:

    view = View(Item('panel'))

к этому:

    view = View(Item('panel', style='custom'))

Дополнительные сведения см. в документации по InstanceEditor(). Соответствующей частью этого документа является абзац под скриншотом. Стиль simple для InstanceEditor (стиль по умолчанию) создает кнопку, при нажатии которой открывается новое окно, содержащее вид экземпляра. Стиль custom встраивает вид экземпляра в то же окно, которое содержит элемент. На снимке экрана на рис. 36 показан пример. В верхней части скриншота показан стиль simple, а под ним — стиль custom. (А ниже находятся стили text и readonly, но они не очень полезны, разве что для отладки.)

person Warren Weckesser    schedule 01.11.2013
comment
Спасибо, это работает! Так просто. Я прочитал страницу InstanceEditor и до сих пор не просветлен. Не могли бы вы объяснить немного больше о том, что происходит? Спасибо, ДэнГ - person DanG; 02.11.2013
comment
Спасибо, это помогает. Значит, метод configure_traits вызывает InstanceEditor? Я видел примеры использования editor=InstanceEditor в Item(). Не уверен, зачем это нужно делать, если он уже вызывается configure_traits... Надеюсь, я понимаю... - person DanG; 02.11.2013