1 回答
TA贡献1847条经验 获得超7个赞
pack()您可以通过首先创建两者然后使用在它们之间切换来将条目替换为标签。诀窍是不要让它们的不同大小影响应用程序布局,这可以通过禁用大小传播来实现。
在我的示例中,我创建了一个entry_frame具有固定大小的新框架 (),然后禁用大小传播 ( .pack_propagate(False))。然后我使用这个新框架来包含条目/标签。我给entry_framebg 颜色卡其色让您确切地看到它在哪里。
我也摆弄了一下列号。
from tkinter import *
root = Tk()
frame1 = Frame(root)
frame1.pack()
def reset():
text_label.pack_forget()
entry1.pack()
cbtn['state'] = NORMAL
def confirm():
global set_cname
entry1.pack_forget()
text_label.config(text=entry1.get())
text_label.pack(side='left')
entry1.delete(0, 'end')
cbtn['state'] = DISABLED
cname = Label(frame1, text="Customer Name: ")
cname.grid(row=0, column=0, padx=5, pady=5, sticky=W)
entry_frame = Frame(frame1, width=130, height=20, bg='khaki')
entry_frame.grid(row=0, column=1, padx=5, pady=5, sticky='nsew')
entry_frame.pack_propagate(False) # Disable size propagation
entry1 = Entry(entry_frame) # Customer name entry
entry1.pack()
text_label = Label(entry_frame) # Label to hold customer name
cbtn = Button(frame1, text="Confirm", command=confirm, width=20)
cbtn.grid(row=1, column=2, padx=5, pady=5)
rbtn = Button(frame1, text="Reset Names", command=reset, width=20)
rbtn.grid(row=2, column=2, padx=5, pady=5)
root.mainloop()
请注意,此解决方案将对字体大小更改敏感。
添加回答
举报