Atom apiは、EnamlがMVCを実装するために使用するライブラリです。原子varを変更すると、UIが更新されます。 UIでそれを変更すると、モデルが更新されます。私はそのVAR最後の文はmyboolの更新に失敗しPython Atom API:辞書を使用するときにatom varを設定する方法
from atom.api import Atom,Bool
class MyModel(Atom):
myBool = Bool()
def getDict(self):
return {'mybool':self.myBool}
def setAllBoolsTrue(self):
self.myBool = True #example to show that just setting mybool will update UI components that use it
#now to show how I'd like to generalize to many components
for k,v in self.getDict().iteritems():
v = True # this fails, even though the id(v) is the same as id(self.mybool)
を辞書に(この場合はブール値())のAtom VARを入れて、後で更新したいと思います
は、それだけの単純な割り当てを行います。
辞書から取得したBool()を単に設定するのと同じ方法で更新する方法はありますか?
編集:コードが更新され、構文エラーはありません。
編集:で
tempDict = self.getDict();
#self.myBool = True # this works
tempDict['mybool'] = True #this does not work
ていますが、地元を再割り当てしようとしているようこれは見えます変数(コピー)。おそらく、 'set'操作で辞書を変更する必要があります。 – Carcigenicate
コードに少なくとも1つの構文エラーがあります。投稿する内容が[MCVE]であることを確認してください。あなたはPython OOPにどれくらい精通していますか?複数のものは少し外れています...あなたの特定の問題は、名前 'v'がリバウンドしていることです。その代わりに、dictを格納し、それをループ内に変更する必要があります。他のすべての問題は脇に置いておきます。 'tmpdict = getDict(); tmpdictのkのために:tmpdict [k] = True'。 –
あなたは正しい@Carcigenicateです。単純な変数の割り当てが行われています。ローカルvarとmyBoolのid()は同じです。元の変数を更新するために呼び出せる関数はありますか?私はセットを見ます。 –