0

基本的なプログラミングの経験は豊富ですが、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 が見つかりました。

確かにこれを行う方法はありますが、私のグーグル検索では見つかりませんでした。

ありがとう!

4

1 に答える 1

3

を使用することはできません。使用..., textvariable="sheetid"する必要があります..., textvariable=sheetid, ...( を引用符で囲んでいないことに注意してくださいsheetid)。そして、値を書き出す場合は、 を使用する必要がありますsheetid.get()

于 2013-05-05T02:47:36.967 に答える