首页 文章

代码无法尝试将StringVar的内容写入文件

提问于
浏览
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()

我之前使用Label小部件在窗口中编写变量“sheetid”,因此我知道Entry小部件和“Close”Button小部件的组合正在运行 . 第一个写语句有效,所以我知道我的文件打开代码是正确的 . 第二次写操作会产生运行时错误:

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

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

s = str(sheetid,'\n')

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

TypeError:强制转换为str:需要字节,字节数组或缓冲区对象,找到StringVar .

当然有一种方法可以做到这一点,但我的谷歌搜索还没有找到它 .

谢谢!

1 回答

  • 2

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

相关问题