为什么属性在用户inpu上的traitsui中不更新

2024-09-29 22:35:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的程序,从用户那里得到一个文本输入,并显示在一个仪器上(Keithley)。然而,属性似乎没有改变。也就是说,当我运行Start方法时,输出是“Wowee”,即使我更改了弹出窗口中的显示。我必须使其可编辑吗?我不这么认为。我基本上是遵循Gael Varoquaux's特性简介。在

在控制面板.py: 在

from traits.api import *
from traitsui.api import *

import Keithley3706A_module



class ControlPanel(HasTraits):
    keithley2430settings = Instance(Keithley2430.Keithley2430Settings, ())
    keithley3706Asettings = Instance(Keithley3706A_module.Keithley3706ASettings, ())
    start = Button("Start Measurements")
    clear_3706A_display = Button("Clear K3706A Display")

    k3706A_settings = Keithley3706A_module.Keithley3706ASettings()
    k3706A = Keithley3706A_module.Keithley3706A()
    view = View(Item('start', show_label=False,style='custom' ),
        Item('clear_3706A_display', show_label=False,style='custom' ),
        Item('keithley2430settings',style='custom'),
        Item('keithley3706Asettings',style='simple'))


    def _start_fired(self):
        print "hello %s" % self.k3706A_settings.display
        self.k3706A.message(self.k3706A_settings.display)

    def _clear_3706A_display_fired(self):
        self.k3706A.clear()

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

Keithley3706A.py:

^{pr2}$

Tags: frompyimportselfsettingsstyledisplaycustom
1条回答
网友
1楼 · 发布于 2024-09-29 22:35:33

ControlPanel类中,您已经创建了Keithley3706ASettings的两个不同实例,即keithley3706Asettings和{}。如果我删除后者,并将k3706A_settings替换为keithley3706Asettings,它就可以工作了。以下是我的版本(删除了对2430设备的引用,k3706A特征声明为Keithley3706AInstance,以及其他一些无关的UI更改):

class ControlPanel(HasTraits):

    keithley3706Asettings = Instance(Keithley3706A_module.Keithley3706ASettings, ())

    k3706A = Instance(Keithley3706A_module.Keithley3706A, ())

    start = Button("Start Measurements")
    clear_3706A_display = Button("Clear K3706A Display")

    view = View(UItem('start'),
                UItem('clear_3706A_display'),
                Item('keithley3706Asettings', style='simple'))

    def _start_fired(self):
        print "hello %s" % self.keithley3706Asettings.display
        self.k3706A.message(self.keithley3706Asettings.display)

    def _clear_3706A_display_fired(self):
        self.k3706A.clear()

相关问题 更多 >

    热门问题