2016-07-28 43 views
-2

私がpythonを使って作業しているのは初めてです。私は電話帳を作っています。デフ私は(「」)name.setいる追加でPython、電話帳

enter code here 
from tkinter import* 

def delete(): 
    select=listbox.curselection() 
    index=select[0] 
    listbox.delete(index) 

def add(): 
    name=entry1.get() 
    telephone=entry2.get() 
    name.set("") 
    telephone.set("") 
    listbox.insert(END, name+ ': ' + telephone) 
    if name=="": 
     labelError=Label(frame1, text="Name is empty", fg="red") 
     labelError.grid(columnspan=2) 
    if telephone=="": 
     labelError2=Label(frame1, text="Telephone is empty", fg="red") 
     labelError2.grid(columnspan=2) 

def save(): 
    list1=list(listbox.get(0,END)) 
    f=open("output.txt", "w") 
    f.writelines(str(list1)) 
    f.close() 

wn=Tk() 
wn.geometry("400x350") 
wn.title("Telephone") 

frame1=Frame(wn) 
frame2=Frame(wn) 
frame1.pack() 
frame2.pack() 

label1=Label(frame1, text="List of contacts", font="Calibre 30") 
label1.grid(row=0, columnspan=2) 
label2=Label(frame1, text="Name:", font="Calibre 18") 
label2.grid(row=1, column=0) 
label3=Label(frame1, text="Telephone:", font="Calibre 18") 
label3.grid(row=2, column=0) 

name=StringVar() 
entry1=Entry(frame1,textvariable=name) 
entry1.grid(row=1, column=1) 

telephone=StringVar() 
entry2=Entry(frame1,textvariable=telephone) 
entry2.grid(row=2, column=1) 

scrollbar=Scrollbar(frame2, orient=VERTICAL) 

listbox=Listbox(frame2, selectmode=EXTENDED, yscrollcommand=scrollbar.set,width=40) 
listbox.grid(row=3, columnspan=3) 

scrollbar.config(command=listbox) 


button1=Button(frame2, text="Add", width=15, height=1, command=add) 
button1.grid(row=5, column=0) 

button2=Button(frame2, text="Delete", width=15, height=1, command=delete) 
button2.grid(row=5, column=1) 

button3=Button(frame2, text="Save to file", width=15, height=1, command=save) 
button3.grid(row=5, column=2) 

wn.mainloop() 

私はそれを実行しようとしたとき、私は、このエラーが発生しました:

enter code here 
Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__ 
    return self.func(*args) 
    File "C:\Users\Sana\Desktop\Sana\python\telephone.py", line 11, in add 
    name.set("") 
AttributeError: 'str' object has no attribute 'set' 

私は私の名前はSTRINGVARであることを書きましたが、strだけではありません。私に何ができる? また、私は自分のリストボックスを編集したいのですが、実行中に1つの文字列(名前+電話)を選択して編集することを意味します。 ところで、私はname.set( "")cuzと書いた。新しい連絡先を追加するたびに自分のエントリーを空にしたい。

+2

'name = entry1.get()'それを文字列に設定しています。後でコードで行うことは重要ではありません。この時点で、 'name'は' entry1.get() 'の戻り値に等しくなります。これはこの場合の文字列です。 –

答えて

2
def add(): 
    name = entry1.get() 
    telephone = entry2.get() 
    name.set("") 
    telephone.set("") 

name(及びtelephone)は(entry.get戻り列以降)の文字列です。文字列にはPythonではsetという属性がありません。したがって、受け取ったエラーです。

あなたはentry1.setentry2.setを意味します。

関連する問題