1 回答

TA貢獻1847條經(jīng)驗 獲得超7個贊
pack()您可以通過首先創(chuàng)建兩者然后使用在它們之間切換來將條目替換為標簽。訣竅是不要讓它們的不同大小影響應用程序布局,這可以通過禁用大小傳播來實現(xiàn)。
在我的示例中,我創(chuàng)建了一個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()
請注意,此解決方案將對字體大小更改敏感。
添加回答
舉報