2016-12-08 10 views
0

私はtkinterウィンドウのアイコンを変更しようとしています。私の問題は、理解クラスが不足していることに起因していると思います。設定ウィンドウのアイコンtkinter

私は理由を知りたい:完璧に動作

import tkinter 
root = tkinter.Tk() 
img = tkinter.PhotoImage(file = r'stockIcon.gif') 
root.tk.call('wm', 'iconphoto', root._w, img) 

root.mainloop() 
。しかし:

import tkinter 

class Test: 
    def __init__(self): 
     self.root = tkinter.Tk() 
     self.img = tkinter.PhotoImage(file = r'stockIcon.gif') 
     self.root.tk.call('wm', 'iconphoto', root._w, img) 
     self.root.mainloop() 

test = Test() 

throws NameError: name 'root' is not definedです。私は何を誤解していますか?

+2

エラーは問題がある正確に何を語っています。 'self.root'を定義しましたが、' root'は定義していません。 –

答えて

4

あなたはroot

self.rootによる変更にアクセスする必要があります。

self.root.tk.call('wm', 'iconphoto', root._w, img) 

へ:

self.root.tk.call('wm', 'iconphoto', self.root._w, img) 
+0

うわーです。どうもありがとうございます!私は今、本当に馬鹿だと感じます。 –

+1

オブジェクト指向プログラミングに慣れても問題はありません。 –

+0

'root 'のプライベート' _w'属性へのアクセスを避ける方法はありますか? – phoenix

関連する問題