这是"点击我"单击界面上的按钮时运行的函数。
def click_me():
file_name = file_name_entry.get()
the_file_name = str(file_name)
open(the_file_name, "r")
imp_message = file.read(the_file_name)
括号内the_file_name
下面有一条灰线,当盘旋在上面时说:传递str而不是文件 - 这是故意的吗?
password_output.delete(0.0, END)
password_output.insert(END, imp_message)
相关的TKInter代码如下......
file_name_entry = Entry(encrypt_frame, width=20)
file_name_entry.grid(column = 1, row = 1, sticky = W)
Button(encrypt_frame, text= "Submit", command = click_me).grid(column = 2, row = 1)
错误输出是:
IOError: Errno22 invalid mode ('r/) or filename ""
答案 0 :(得分:0)
您的代码已关闭,但您尝试从文件名而不是打开的文件对象中读取。将您的代码更改为:
file=open(the_file_name, "r")
imp_message = file.read()
更好的是,使用一个上下文管理器,它会在你完成时自动关闭文件:
with open(the_file_name, "r") as f:
imp_message = f.read()
python文档有一个关于读写文件的很好的教程:
与实际问题无关,您的代码存在一些问题。
首先,不需要这个陈述:
the_file_name = str(file_name)
在这种情况下,file_name
已经是一个字符串,因为它来自Entry
小部件。
其次,语句0.0
中的索引password_output.delete(0.0, END)
不正确。文本窗口小部件索引必须是< line> 。< column> 形式的字符串,并且行从1(一)开始。第一个字符的正确索引是字符串"1.0"
。