0
我想要在Tkinter GUI中检索我的Entry小部件的值(文件名),并在我的file_open函数中使用它来获取文件名,读取它并返回内容添加到我的文本小部件中。无法获取Tkinter中的Entry Widget的值
但我得到一个属性错误,说应用程序对象没有属性f3_entry(尽管我创建一个分配给f3_entry的条目小部件)。我在这里做错了什么?
from tkinter import *
from tkinter.filedialog import LoadFileDialog, SaveFileDialog, Directory
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.grid()
self.master.title("Grid layout")
self.createWidgets()
def createWidgets(self):
def handler(event):
print("Frame {} clicked at {} {}".format(event.widget, event.x, event.y))
for r in range(6):
self.master.rowconfigure(r, weight=1)
for c in range(6):
self.master.columnconfigure(c, weight=1)
Frame1 = Frame(self.master, bg="red", name='frame 1')
Frame1.grid(row=0, column=0, rowspan=3, columnspan=3, sticky=W+E+N+S)
Frame1.bind("<Button-1>", handler)
Frame2 = Frame(self.master, bg="green", name='frame 2')
Frame2.grid(row=3, column=0, rowspan=3, columnspan=3, sticky=W+E+N+S)
Frame2.bind("<Button-1>", handler)
Frame3 = Frame(self.master, bg="blue", name='frame 3')
Frame3.grid(row=0, column=3, rowspan=6, columnspan=4, sticky=W+E+N+S)
f3_entry = Entry(Frame3).pack(fill=BOTH)
f3_text = Text(Frame3).pack(fill=BOTH)
r_button = Button(self.master, text="Red").grid(row=6,column=1,sticky=E+W)
b_button = Button(self.master, text="Blue").grid(row=6,column=2,sticky=E+W)
g_button = Button(self.master, text="Green").grid(row=6,column=3,sticky=E+W)
bk_button = Button(self.master, text="Black").grid(row=6,column=4,sticky=E+W)
o_button = Button(self.master, text="Open", command=self.file_open).grid(row=6,column=5,sticky=E+W)
def file_open(self):
d = LoadFileDialog(self)
fname = self.f3_entry.get()
if fname is None:
print("No file exists...")
else:
f = open(fname, 'r').read()
f3_text.insert(f)
f.close()
root = Tk()
app = Application(master=root)
app.mainloop()
啊。我正在朝这个方向思考。我会给它一个镜头。 – 2014-11-05 22:30:57
@PatrickBeeson:我已经更新了一些你需要在这里考虑的更多细节。 – 2014-11-05 22:35:42