我有很多基本编程经验,但没有 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。
当然有办法做到这一点,但我的谷歌搜索没有找到它。
谢谢!