如何使用TKInterface读取消息?

时间:2015-11-10 18:12:31

标签: python python-2.7 button text tkinter

这是"点击我"单击界面上的按钮时运行的函数。

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 ""

1 个答案:

答案 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"