2017-10-04 4 views
-1

表示されたピザプレビューを任意のピザに変更できるようにコードを作成したいが、フレーズの仕方を理解できない。 今リストtkinterから画像を変更

from tkinter import * 
from itertools import cycle 

class buttonInitialize: 
    def __init__ (self,enabler): 
     leftframe=Frame(enabler) 
     leftframe.pack(side=LEFT) 
     rightframe=Frame(enabler) 
     rightframe.pack(side=RIGHT) 

     pizzaList=[] 
     pizzaList.append(PhotoImage(file="0.png").zoom(10)) 
     pizzaList.append(PhotoImage(file="1.png").zoom(10)) 


     self.otherButton=Button(leftframe,text="??",command=self.makePizza(1)) 
     self.otherButton.pack() 

     self.printButton=Button(rightframe,image=pizzaList[0]) 
     self.printButton.pack() 

    def makePizza(self,index): 
     self.printButton["image"]=self.pizzaList[index] 
root=Tk() 
c=buttonInitialize(root) 
root.mainloop() 

を(私は小さな画像を使用していますので、私は中にズームしています)、私はエラー

AttributeError: 'buttonInitialize' object has no attribute 'pizzaList' 

はありがとうを取得しています!

+1

'pizzaList'は' self.pizzaList'とは異なります。 – Lafexlos

+0

私は両方の方法で試してみましたが、それでも同じエラーが発生します。私はイメージをどのように更新できるか知っていますか? –

+0

回答を追加しました。希望、少しクリアする。 – Lafexlos

答えて

1

self.pizzaList - >クラス変数
pizzaListからmakePizzapizzaListにアクセスするには>ローカル変数

、あなたは__init__に作成するときに、そのクラスのpizzaList変数を作るためにself.接頭辞を使用する必要があります。

class buttonInitialize: 
    def __init__ (self,enabler): 
     ... 
     ... 
     self.pizzaList= [] 
     self.pizzaList.append(PhotoImage(file="0.png").zoom(10)) 
+0

ありがとう!その問題のその固定部分。私は今、AttributeErrorエラーを取得しています: 'buttonInitialize'オブジェクトに 'printButton'属性がありません。 –

+0

@I_Queerly_Belong_Here上記で指定したコードは、そのエラーをスローしません。どこかのタイプミスがあるはずです。あなたの_new_エラーは、とにかく同じソースを持っています。 – Lafexlos

+0

ああ、私は問題を発見した、私はちょうどTtinter構文ではなく、インターツール構文でパネルを更新していた。 –

関連する問題