2017-06-19 245 views
-6

私はPythonにはかなり新しく、機能するテストプログラムを手に入れることができません。目標は、情報を保持するオブジェクトを使用してアドレス帳を作成することでした。ボタンが代わりに更新するのでクリックされたときに、ウィジェットの実行は、私はエラーを取得Tkinter:return self.func(* args)

"Exception in Tkinter callback 
Traceback (most recent call last): 

File "C:\Users\neuvillerl\Desktop\Python27\lib\lib-tk\Tkinter.py", line 1542, in __call__ 
    return self.func(*args) 

    File "C:\Users\neuvillerl\workspace\vtk_testing\wid.py", line 71, in <lambda> 
    btns = Tkinter.Button(nam, text = x.get_name(), command= lambda x=x: update(x),bg = 'blue', fg = 'white') 

    File "C:\Users\neuvillerl\workspace\vtk_testing\wid.py", line 61, in update 
    lbl5.configure(nam, text = "name: " + str(person.get_name())) 

    File "C:\Users\neuvillerl\Desktop\Python27\lib\lib-tk\Tkinter.py", line 1331, in configure 
    return self._configure('configure', cnf, kw) 

    File "C:\Users\neuvillerl\Desktop\Python27\lib\lib-tk\Tkinter.py", line 1322, in _configure 
    self.tk.call(_flatten((self._w, cmd)) + self._options(cnf)) 
TclError: unknown option "-colormap"" 

とコード:

nam = Tkinter.Tk() 

class person(object): 


def __init__(self, name, phone, address, email): 
    self.name = name 
    self.phone = phone 
    self.address = address 
    self.email = email 

def get_name(self): 
    return self.name 
def get_phone(self): 
    return self.phone 
def get_address(self): 
    return self.address 
def get_email(self): 
    return self.email 

riley = person("Riley", "XXX-XXX-XXXX", "This place", "[email protected]") 
alex = person("Alex","XXX-XXX-XXXX", "That place", "[email protected]") 
maggie = person("Maggie","XXX-XXX-XXXX","Other place","[email protected]") 
lst = [riley,alex,maggie] 
def update(person): 
    lbl5.configure(nam, text = "name: " + str(person.get_name())) 
    lbl6.configure(nam, text = "phone#: " + str(person.get_phone())) 
    lbl7.configure(nam, text = "address: " + str(person.get_address())) 
    lbl8.configure(nam, text = "email: " + str(person.get_email())) 
lbl5 = Tkinter.Label(nam, text = "name:") 
lbl6 = Tkinter.Label(nam, text = "phone#:") 
lbl7 = Tkinter.Label(nam, text = "address:") 
lbl8 = Tkinter.Label(nam, text = "email:") 

for x in lst: 
    btns = Tkinter.Button(nam, text = x.get_name(), command= lambda x=x: 
update(x),bg = 'blue', fg = 'white') 
    btns.pack(fill = Tkinter.X) 
lbl5.pack() 
lbl6.pack() 
lbl7.pack() 
lbl8.pack() 
nam.mainloop()` 
+2

である必要があります。これはエラーメッセージではなく、関数の名前を示しています。全体のエラーメッセージ – user3080953

+0

を更新してください。ごめんなさい。 –

答えて

2

問題は、あなたがLabel.configureに最初の引数としてnamインスタンスを渡しているということです方法。あなたの関数は:

def update(person): 
    lbl5.configure(text = "name: " + str(person.get_name())) 
    lbl6.configure(text = "phone#: " + str(person.get_phone())) 
    lbl7.configure(text = "address: " + str(person.get_address())) 
    lbl8.configure(text = "email: " + str(person.get_email())) 
+0

それだけです。私は今、馬鹿だと感じる。ありがとうございました! –