-1

このコードは、テキスト ファイルの 1 行にいくつかの内容を書き込むことを目的としています。

from tkinter import *
Tag=0
x="txt.txt"
w=open(x,"w")
root=Tk()
win1=Frame(root)
Label(root,text="Tag").pack()
tagE=Entry(root)
tagE.pack()
def get_it():                    
    Tag=(tagE.get())                                                                       
v=Button(root,text="Submit",command=get_it)
v.pack()
win1.pack()
w.write("%s var=%s"%(Tag,"text"))
w.close()
root.mainloop()

Tag=(tagE.get()) は、実際よりも多くのスペースでインデントされています。このコードを実行すると、「AttributError: 'NoneType' object has no attribute 'get'」というメッセージが表示されるか、タグ値が元の値の 0 になります。

4

2 に答える 2

1

エントリの値を取得するだけでなく、同じ関数でファイルに値を書き込む必要があります。

from tkinter import *

filename = "txt.txt"
root=Tk()
Label(root,text="Tag").pack()
tagE=Entry(root)
tagE.pack()

def get_it():
    w=open(filename, "w")
    tag = tagE.get()
    w.write("%s var=%s"%(tag,"text"))
    w.close()

v=Button(root,text="Submit",command=get_it)
v.pack()
root.mainloop()

どのウィジェットの親としても使用しないためFrame 、ルート要素を直接使用できます。補足として、変数にはPEP8で提案されているように小文字表記を使用し、より明確な名前を使用することをお勧めします。

于 2013-03-30T23:04:28.483 に答える
0

Tkinter の仕組みを誤解しています。ボタンをクリックする前に、print ステートメントが実行されます。print ステートメントを の中に入れる必要がありますget_it

于 2013-03-30T17:46:11.097 に答える