import tkinter
top = tkinter.Tk()
top.geometry("800x800")
top.title("Text Editor")
edit = False
name = tkinter.Entry(top)
def editTrue():
edit = True
name.pack_forget()
def editFalse():
edit = False
name.pack()
menubar = tkinter.Menu(top)
filemenu = tkinter.Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=editFalse)
filemenu.add_command(label="Edit", command=editTrue)
menubar.add_cascade(label="File", menu=filemenu)
top.config(menu=menubar)
text = tkinter.Text(top, height=800, width=800)
def saveNotes():
notes = text.get(1.0, "end")
f = open(name.get() + ".txt", "a")
f.write(notes)
f.close()
button = tkinter.Button(top, text="Save", command=saveNotes)
button.pack()
name.pack()
text.pack()
top.mainloop()
到目前为止,这是我的代码,问题是,当我调用
widget.pack_forget()
函数时,它运行良好。它隐藏了它和所有这些东西。但是,当我再次调用widget.pack()
来恢复它时,它没有出现。我不明白为什么。我会很感激一些帮助。
您的文本框太大,800 个字符宽度和 800 行高度。所以当
name
被removed(name.pack_forget()
)然后再次shown(name.pack()
)时,它会被打包到文本框下面。由于文本框太大,name
被推出了窗口的可视区域。
要么使文本框变小(
width=80, height=40
),要么使用name
在文本框之前pack
name.pack(before=text)
.
当我再次调用 widget.pack() 来恢复它时,它没有出现 使用
而不是创建的函数。lambda
lambda
和pady
。lambda
在命令关键字中。Entry
小部件中添加pady=10。片段:
import tkinter
top = tkinter.Tk()
top.geometry("800x800")
top.title("Text Editor")
edit = False
name = tkinter.Entry(top)
menubar = tkinter.Menu(top)
filemenu = tkinter.Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=lambda: name.pack(pady=10))
filemenu.add_command(label="Edit", command=lambda: name.pack_forget())
menubar.add_cascade(label="File", menu=filemenu)
top.config(menu=menubar)
text = tkinter.Text(top, height=40, width=80)
def saveNotes():
notes = text.get(1.0, "end")
f = open(name.get() + ".txt", "a")
f.write(notes)
f.close()
button = tkinter.Button(top, text="Save", command=saveNotes)
button.pack()
text.pack()
name.pack(pady=10)
top.mainloop()
屏幕截图:您将看到条目小部件隐藏并显示在底部。