Я следовал руководству «Написание графических приложений для научного программирования с использованием TraitsUI http://code.enthought.com/projects/traits/docs/html/tutorials/traits_ui_scientific_app.html и проверил следующий фрагмент кода:
from enthought.traits.api import *
from enthought.traits.ui.api import *
class Camera(HasTraits):
""" Camera object """
gain = Enum(1, 2, 3,
desc="the gain index of the camera",
label="gain", )
exposure = CInt(10,
desc="the exposure time, in ms",
label="Exposure", )
def capture(self):
""" Captures an image on the camera and returns it """
print "capturing an image at %i ms exposure, gain: %i" % (
self.exposure, self.gain )
if __name__ == "__main__":
camera = Camera()
camera.configure_traits()
camera.capture()
Если я запускаю это в командной строке, он работает так, как рекламируется. Появляется графический интерфейс. Вы настраиваете параметры, и когда вы нажимаете «ОК», он возвращает измененные значения. Но когда я запускаю тот же код из редактора Canopy, нажимая кнопку запуска, параметры по умолчанию печатаются немедленно; то всплывает окно. Когда вы затем настраиваете параметры в графическом интерфейсе и нажимаете «ОК», графический интерфейс закрывается, но новые значения параметров не печатаются.
Как будто каким-то образом camera.capture() запускается до camera.configure_traits.