python-2.7 - Traits ui (enthought) 和来自 C 的回调

标签 python-2.7 enthought traits

我有代码:

import time
import numpy as np
from scipy.optimize import fmin_tnc
from enthought.traits.api import *
from enthought.traits.ui.api import *

class Minimizer(HasTraits):
    iteration = Int(0)
    run = Button

    def callback(self, x):
        self.iteration += 1
        print self.iteration
        time.sleep(0.5)

    def func(self, x):
        return (x**2).sum()

    def fprime(self, x):
        return 2*x

    def minimize(self):
        x0 = np.random.rand(50)
        fmin_tnc(self.func, x0, fprime=self.fprime, messages=0, callback = self.callback) 

    def _run_fired(self):
        self.minimize()

    traits_view = View(Item('iteration'), UItem('run'))

m = Minimizer()
m.configure_traits()

运行上述代码并按“运行”按钮后,我预计“迭代”属性将在每次迭代时在 GUI 中更新,但事实并非如此。我怀疑这是因为这个值被 C 的回调改变了。在这种情况下应该做什么来更新用户界面?

问候, 马立克

最佳答案

m.configure_traits() 的调用是阻塞的,这意味着在您关闭该调用创建的窗口之前,脚本的执行不会继续越过该行。换句话说,当窗口打开时,m.minimize 不会被调用。

关于python-2.7 - Traits ui (enthought) 和来自 C 的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33498510/

相关文章:

python - Cython 导入错误 : No module named parallel

generics - 特征对象如何使用通用方法作为参数来接受特征?

python - 具有 "depends_on"的属性特征

python - 在 Enthought Canopy IDE 中执行脚本时 matplotlib.figure() 不起作用

scala - 选择特征来继承 Scala 中的通用方法

rust - 隐性特征容器的不适当生命周期

python - 列表列表列表中项目的索引(Python)

python - 如何使用最小比例 python pygal

python - 如何刷新 PCF 上托管的 python CGI 文件中的 STDOUT?

python - 从 python 列表访问二进制数据时出错