基本的なプログラミングの経験は豊富ですが、GUI プログラミングの経験はありません。そのために tkinter を使用して Python 3 を独学しています。stackoverflow の投稿をチェックしていくつかの素晴らしい回答を得ましたが、今はカバーされていないように見える問題があります。私のプログラムで Entry ウィジェットからユーザー入力を取得し、そのデータをファイルに書き込みたいと考えています。不要な行をすべて取り除いた後、私の現在のコードは
from tkinter import *
from tkinter import ttk
root = Tk()
sheetid = StringVar()
def finish():
with open('C:/Python33/data.txt', 'w') as f:
f.write('first line of text\n')
with open('C:/Python33/data.txt', 'a') as f:
f.write(sheetid)
main = Frame(root).grid()
ttk.Entry(main, textvariable="sheetid").grid(row=0, column=1)
ttk.Button(main, text="Close", command=finish).grid(column=1)
root.mainloop()
以前、ラベル ウィジェットを使用して変数「sheetid」をウィンドウに書き込んだので、エントリ ウィジェットと「閉じる」ボタン ウィジェットの組み合わせが機能していることがわかります。最初の書き込みステートメントが機能するので、ファイルを開くコードが正しいことがわかります。2 回目の書き込みで実行時エラーが発生します。
TypeError: StringVar ではなく、str でなければなりません。
次に、「sheetid」を文字列に変換してみました。
s = str(sheetid,'\n')
しかし、これも実行時エラーを返しました:
TypeError: str への強制: バイト、bytearray、またはバッファのようなオブジェクトが必要です。StringVar が見つかりました。
確かにこれを行う方法はありますが、私のグーグル検索では見つかりませんでした。
ありがとう!