是否可以在 tkinter 中用标签覆盖输入字段?

我有一个简单的标签和输入字段,它将:1)创建一个静态标签并在单击确认按钮后清除输入字段 2)在单击重置按钮后清除静态标签


有没有办法在确认点击时用用户输入的静态标签覆盖输入字段,而不是创建新的静态标签?并在重置点击时用空输入字段覆盖静态标签?


提前感谢您的帮助。


from tkinter import *


root = Tk()

frame1 = Frame(root)

frame1.pack()



def reset():

     set_cname.destroy()

     cbtn['state'] = NORMAL


def confirm():

    global set_cname

    text1="Customer Name: " + entry1.get()

    set_cname = Label(frame1, text=text1)

    set_cname.grid(row=3, column=0, columnspan=1)

    entry1.delete(0, 'end')


    cbtn['state'] = DISABLED



cname = Label(frame1, text="Customer Name: ").grid(padx=5, pady=5, columnspan=2, sticky=W)

entry1 = Entry(frame1)

entry1.grid(row=0, column=2, padx=5)



cbtn = Button(frame1, text="Confirm", command=confirm, width=20)

cbtn.grid(row=1, column=4, padx=5, pady=5)


rbtn = Button(frame1, text="Reset Names", command=reset, width=20)

rbtn.grid(row=2, column=4, padx=5, pady=5)



root.mainloop()


慕丝7291255
浏览 121回答 1
1回答

aluckdog

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'] = NORMALdef confirm():    global set_cname    entry1.pack_forget()    text_label.config(text=entry1.get())    text_label.pack(side='left')    entry1.delete(0, 'end')    cbtn['state'] = DISABLEDcname = 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 propagationentry1 = Entry(entry_frame)         # Customer name entryentry1.pack()text_label = Label(entry_frame)     # Label to hold customer namecbtn = 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()请注意,此解决方案将对字体大小更改敏感。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python