我正在关注教程“使用 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 编辑器中运行相同的代码时,会立即打印默认参数;然后弹出窗口。然后,当您在 GUI 中调整参数并单击“确定”时,GUI 会退出,但不会打印新的参数值。
就好像 camera.capture() 在 camera.configure_traits 之前运行一样。