2016-10-30 4 views
-2

tkinterエントリからデータを取得し、それをtxtファイルに書きたいとします。私はこのコードを書いたが、うまくいかない。どこで間違いはありますか?私は初心者です。私は今、とても複雑に書いています。私は今、これを行う方法がたくさんあると思います。tkinterエントリからのデータの取得とtxtファイルへの書き込み

#!/usr/bin/env python 

#-*- coding: utf-8 -*- 


from tkinter import * 


root = Tk() 


label_1 = Label(root, text="Email:") 
label_2 = Label(root, text="Password:") 
entry_1 = Entry(root, textvariable = "var") 
entry_2 = Entry(root) 


label_1.grid(row=0, sticky=E) 
label_2.grid(row=1, sticky=E) 

entry_1.grid(row=0, column=1) 
entry_2.grid(row=1, column=1) 

c = Checkbutton(root, text="Keep me logged in") 
c.grid(columnspan=2) 

var = StringVar() 
var.set("Email:" , entry_1) 
a = var.get() 
data = open("/home/guillermo/Desktop/data.txt", "w") 
data.write(a) 
data.close() 

root.mainloop() 
+1

が、それは*動作しません - それは本当に便利ではありません。 *何がうまくいかない? – Li357

+0

コードは動作しません –

+0

しかし、*どのように動作しませんか?どのようなやり方で、それは何をすべきかをすることに失敗しますか? – Li357

答えて

1

あなたのコードはいくつかの概念の誤解を示しています。まず、Entryウィジェットのtextvariableは、ハードコードされた文字列ではなく、変数(具体的には、後で作成する場合はtkinter.StringVar())とみなされます。第二に、StringVar()を最終的に作成します... set()メソッドに2つの引数を送信するだけなので、何もしません。おそらく、print()関数に慣れていて、任意の数の引数をとり、separator、endなどを適用します。単に複数の引数を関数に送信しても、それらの関数に文字列結合は実行されません。次に、送信する引数の1つがentry_1で、これはEntryウィジェットです。このようなウィジェットはにはというテキストが含まれていますが、テキスト自体ではありません。 textvariableにアクセスするか(提供した場合)、またはその内容を取得する必要があります。特に複雑なことをしていない場合は、textvariableはまったく必要ありません。

これらのエラーは、下に修復されました:*

from tkinter import * 

root = Tk() 

label_1 = Label(root, text="Email:") 
label_2 = Label(root, text="Password:") 
entry_1 = Entry(root) 
entry_2 = Entry(root) 


label_1.grid(row=0, sticky=E) 
label_2.grid(row=1, sticky=E) 

entry_1.grid(row=0, column=1) 
entry_2.grid(row=1, column=1) 

c = Checkbutton(root, text="Keep me logged in") 
c.grid(columnspan=2) 

with open("/home/guillermo/Desktop/data.txt", "w") as data: 
    data.write('Email: ' + entry_1.get()) 

root.mainloop() 
+0

それは私が探していた答えと解決策です。ありがとう! –

+0

それは働いて、私が望むようにしました。それは素晴らしいです、もう一度感謝:) –

関連する問題