1
我有一個簡單的程序,可以從用戶那裏獲取文本輸入,並將其顯示在儀器上(吉時利)。但是,該屬性似乎沒有改變。也就是說,當我運行Start方法時,即使在彈出窗口中更改了Display,輸出也是「Wowee」。我必須使它可編輯嗎?我不這麼認爲。我基本上是遵循Gael Varoquaux's介紹性狀。爲什麼屬性不會在用戶輸入的traitsui中更新
COntrolPanel.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:
from traits.api import *
from traitsui.api import *
import visa
import time
class Keithley3706ASettings(HasTraits):
display = String("Wowee")
class Keithley3706A(HasTraits):
def __init__(self):
self.Keithley3706AUSB = visa.instrument("USB0::0x05E6::0x3706::04019447::INSTR")
def message(self,foo):
s="display.settext('%s')" % foo
self.Keithley3706AUSB.write("display.clear()")
self.Keithley3706AUSB.write(s)
def clear(self):
self.Keithley3706AUSB.write("display.clear()")
謝謝!那爲什麼它不工作?除了凌亂,不能有兩個實例嗎? 'k3706A = Instance(Keithley3706A_module.Keithley3706A,())'和'k3706A = Keithley3706A_module.Keithley3706A()'有什麼區別?我找不到「Instance()」的參考。 – DanG
它沒有工作,因爲GUI正在更改一個實例,但'_start_fired'正在使用來自另一個實例的字符串,該字符串從未更改過。它沒有聲明'k3706A'是'Instance',我不記得是否有不使用'Instance'可能引起的特定問題,但是如果你打算使用Traits,你可能會你明確聲明的類型。下面的預定義特徵表中提到了「Instance」特徵類型:http://docs.enthought.com/traits/traits_user_manual/defining.html#predefined-traits –
Aha!好的我知道了。感謝您的參考。應該更容易找到... – DanG