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”,所以我知道条目小部件和“关闭”按钮小部件的组合正在工作。第一个 write 语句有效,所以我知道我的文件打开代码是正确的。第二次写入给出了运行时错误:

TypeError:必须是 str,而不是 StringVar。

接下来我尝试将“sheetid”转换为字符串,使用

s = str(sheetid,'\n')

但这也返回了运行时错误:

类型错误:强制到 str:需要字节、字节数组或类似缓冲区的对象,找到 StringVar。

当然有办法做到这一点,但我的谷歌搜索没有找到它。

谢谢!

4

1 回答 1

3

你不能使用..., textvariable="sheetid",你必须使用..., textvariable=sheetid, ...(注意周围没有引号sheetid)。然后,当你想写出值时,你必须使用sheetid.get().

于 2013-05-05T02:47:36.967 回答