【发布时间】:2021-05-20 07:57:40
【问题描述】:
我有一个分成 3 帧的小脚本:
- 第一行1个
- 第二行左1个
- 右边第二行1个
我按下第一行框架中的按钮,将输入的值交给左边第二行的Label。
这是我的代码:
import tkinter as tk
# Create Window
root = tk.Tk()
# Define String Variable
Name = tk.StringVar()
# Organize root window in 3 frames
EntryFrame = tk.Frame(root)
MainLeftFrame = tk.Frame(root)
MainRightFrame = tk.Frame(root)
# Create Buttons, Entry and Labels
NameLabel = tk.Label(MainLeftFrame, textvariable=Name)
InputName = tk.Entry(EntryFrame, width=20,bg='yellow')
SubmitButton = tk.Button(EntryFrame, text='Submit', command=lambda:action())
# Define what happens when press button reset
def reset():
MainLeftFrame.forget()
MainRightFrame.forget()
EntryFrame.pack()
# Define what happens when button is pressed
def action():
Name.set(InputName.get())
ResetButton = tk.Button(MainRightFrame, text='Reset', command=lambda: reset())
ResetButton.pack()
Placeholder = tk.Label(MainRightFrame, text="place holder")
Placeholder.pack(side="top")
EntryFrame.forget()
# Pack Widgets
EntryFrame.pack(side='top')
MainLeftFrame.pack(side='left')
MainRightFrame.pack(side='right')
InputName.pack()
SubmitButton.pack()
NameLabel.pack()
#mainloop
root.mainloop()
现在我的问题: 当我第二次按下“提交”按钮时(按下重置按钮后)什么也没有发生:(
提前致谢!
【问题讨论】:
-
在
action函数中根据您的需要使用EntryFrame.destroy()或EntryFrame.pack_forget()。前者将永久删除小部件,后者将暂时将其从可见性中删除。 -
您好,首先感谢您的回答,我尝试使用忘记,但仍然无法像我想要的那样工作。我调整了上面的代码,你知道为什么第二次点击“提交”按钮没有显示任何内容吗?
标签: python tkinter hide frames