Tkinter:返回self.func(*args)

2024-10-17 00:26:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还不太熟悉,无法让测试程序正常工作。其目标是创建一个使用对象来保存信息的地址簿。小部件运行,但是当单击按钮而不是更新时,我会得到错误

"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", "email1@hi.com")
alex = person("Alex","XXX-XXX-XXXX", "That place", "email2@hi.com")
maggie = person("Maggie","XXX-XXX-XXXX","Other place","email3@hi.com")
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()`

Tags: textnameinselfgetreturntkinteraddress