我正在编写这个基本的Tk程序,可以打开文本文档,但我似乎可以让它工作
这是我的代码:
from Tkinter import *
from tkFileDialog import askopenfilename
def openfile():
filename = askopenfilename(parent=root)
f = open(filename)
x = f.read()
return x
root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Open", command=openfile)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
text = Text(root)
text.insert(INSERT,(x))
text.pack()
root.config(menu=menubar)
root.mainloop()
我试图将x
输入到我的tk窗口,但它说它没有定义,即使我返回了x
为什么这不起作用我确定它的东西很简单,但我无法弄明白!
答案 0 :(得分:3)
所以这里有两个相关的问题。
x
,即使您尚未定义openfile
返回任何内容在这种情况下无效,因为您无法将其设置为另一个变量(例如x
)您可能想要做的是读取文件并将其插入Text
窗口小部件中的所有相同函数调用中。试试这样的事情,
from Tkinter import *
from tkFileDialog import askopenfilename
def openfile():
filename = askopenfilename(parent=root)
f = open(filename)
x = f.read()
text.insert(INSERT,(x,))
root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Open", command=openfile)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
text = Text(root)
text.pack()
root.config(menu=menubar)
root.mainloop()
答案 1 :(得分:1)
从函数返回值时,需要将其赋值给变量(伪代码):
myVariable = openfile()
然后你可以在你的参数中使用这个变量:
text.insert(INSERT, (myVariable))
变量x在函数内定义,因此超出了范围。