2016-07-11 5 views
0

Ich benutze den ersten Beispiel-Code aus traitsui Dokumentation:Zug mit configure_traits Beizen

from traits.api import HasTraits, Str, Int 
import traitsui 

class SimpleEmployee(HasTraits): 
    first_name = Str 
    last_name = Str 
    department = Str 

    employee_number = Str 
    salary = Int 

sam = SimpleEmployee() 
sam.configure_traits(filename='/Volumes/FAT/Python/Tests/test.dat') 

Die einzige Änderung ist, eine Dateinamen-Spezifikation in configure_traits().

1 - Wenn die Datei nicht existiert, wird keine neue Datei erstellt. Es wäre schön, ein solches Verhalten zu haben.

2 - Wie erstelle ich diese Datei? Mit

import pickle 

pickle.dump(sam, open('/Volumes/FAT/Python/Tests/test.dat', "wb")) 

erstellt die Datei

ctraits.traits 
__newobj__ 
p0 
(c__main__ 
SimpleEmployee 
p1 
tp2 
Rp3 
(dp4 
S'salary' 
p5 
I0 
sS'__traits_version__' 
p6 
S'4.5.0' 
p7 
sS'first_name' 
p8 
S'' 
p9 
sS'last_name' 
p10 
g9 
sS'employee_number' 
p11 
g9 
sS'department' 
p12 
VManagement 
p13 
sb. 

mit 'Management' als Abteilung (I diesen Wert im Dialog eingegeben, natürlich).

Aber wieder

sam.configure_traits(filename='/Volumes/FAT/Python/Tests/test.dat') 

läuft die Abteilung Feld ändern und OK klicken, um den Dialog zu schließen, den Dateiinhalt nicht ändert (wie es von der doc tun sollte).

(MacOS X)

Antwort

0

fand ich, was schiefgeht: configure_traits() sollte in modalen Modus auszuführen gemacht werden:

from traits.api import HasTraits, Str, Int 
from traitsui.api import View, OKCancelButtons 

class SimpleEmployee(HasTraits): 
    first_name = Str 
    last_name = Str 
    department = Str 

    employee_number = Str 
    salary = Int 

sam = SimpleEmployee() 
sam.configure_traits(filename='/Volumes/FAT/Python/Tests/test.dat',kind='modal')  

jetzt OK funktioniert.

Wie für meine Frage # 1, ja, eine neue Datei wird bei Bedarf erstellt