2017-07-27 27 views
0

私はintro to pythonクラスのtic tac toeプロジェクトをやっています。私は9つのボタンのグリッドを作成したいので、 xまたは円が表示されます。私のコードはイメージなしでは正常に機能しますが、イメージでは機能しません。PythonのtkinterはGIFイメージを表示せず、PhotoImage.1と表示されます。

Layout for tic tac toe

What happens after I click on one of the buttons

これはコード(申し訳ありませんが、私はそう、私はフォーマットする方法がわからないスタック上に掲載しません) これは、新しい1つのウェル

def sink(self, i): 

    if self.turn: 
     me = PhotoImage(file="x.gif") 
     self.turn = False 
     self.bState[i] = -1 
     self.bList[i].config(relief=SUNKEN, text=me, state='disabled') 
    else: 
     me = PhotoImage(file="o.gif") 
     self.turn = True 
     self.bState[i] = 1 
     self.bList[i].config(relief=SUNKEN, text=me, state='disabled') 
+0

ohops間違ったコードを使用しました。私は前にコードを使って遊んでいた。私はtext = widgetをimage =に変更しました。そして、ボタンをクリックすると、実際に小さな箱に変わります。 –

+0

古いコードが関係ない場合は、質問から削除してください。 –

答えて

0

ですボタンのtext=オプションに画像を渡しています。このオプションは、名前から推測できるように、ボタンのテキストのみを指定します。代わりにimage=オプションを使用してください。

ローカル変数にのみ読み込むイメージへの参照を格納するので、コードは正常に機能しません。関数が返るとすぐにイメージは消えます。 (Tkinterウィジェットとそれが表示する画像との間の接続は、Pythonのワールドビューの外にあるため、画像がガベージコレクションされないようにするには十分ではありません)。ウィジェットは、通常、ウィジェットの属性、またはグローバル変数のいずれかです。ここで扱う2つのイメージしかないので、グローバル変数は、移動が行われるたびにディスクからイメージをリロードするよりも理にかなっています。

+0

ありがとう!私は自分のコードを振り返り、誤ってimage = widgetをtext = widgetに変更したことに気付きました。しかし、それが私のボタンがまだ参照であってもイメージに変わらない問題の1つだったとしても –

関連する問題