在Python Tkinter中保留输入框

3

我有一个弹出式文本输入框作为GUI的一部分,要求输入两个内容:#1 文件路径 #2 项目(这些是对应Excel表格的引用)

文件路径很少会更改,但仍需要在需要时进行更改的能力。

是否可以在输入框中保留文件路径,以便不需要每次都输入?即在关闭并重新打开输入框后,仍包含 C:\*\*\*\*\*\somthing.xlsx

master = Tk()
master.title("Entry Field")
Label(master, text="Filepath: ").grid(row=0)
Label(master, text="Item Number: ").grid(row=1)
e1 = Entry(master)
e2 = Entry(master)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

def entry_field():
    print("Filepath: %s" % (e1.get()))
    print("Item No: %s" % (e2.get()))

    Button(master, 
           text = 'Accept', 
           command = entry_field).grid(row=3, column=1, sticky=W, pady=4)

    root.mainloop()
1个回答

0

tk.Entry小部件将保留值,直到您将它们重置为新值(当您多次按下“接受”按钮而不修改Entry时,您可以看到这一点;因此,您无需做任何特殊处理。

您可以主动在输入框中插入默认值:

import tkinter as tk

def entry_field():
    print("Filepath: %s" % (e1.get()))
    print("Item No: %s" % (e2.get()))

master = tk.Tk()
master.title("Entry Field")
tk.Label(master, text="Filepath: ").grid(row=0)
tk.Label(master, text="Item Number: ").grid(row=1)


e1 = tk.Entry(master)
e2 = tk.Entry(master)
e1.insert(0, 'C:*****\somthing.xlsx')    # <-- this string will be inserted in the Entry by default

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

tk.Button(master, text = 'Accept', command = entry_field).grid(row=3, column=1,
                                sticky=tk.W, pady=4)
master.mainloop()

这是当前默认情况下条目的显示方式:

enter image description here


有没有办法在输入框中保留实际文本本身?值被保留,但我希望文本也保留在那里,直到被删除并重新输入。如果不可能,一个解决方法是在输入框上方显示当前文件路径。 - M.Tomlinson
我不确定我理解你所说的“保留输入框中的实际文本”的意思是什么?这与输入的文本保持在输入框中有何不同? - Reblochon Masque
所以,序列是在父GUI中按下按钮->弹出输入字段->输入数据->单击接受按钮->关闭窗口。当我再次按下打开此输入字段的按钮时,虽然文件路径仍存储为值,但它在输入字段中不可见,输入字段为空。 - M.Tomlinson
我明白了...是的,你可以:将输入的文本保存在一个变量中,每次通过弹出窗口重新创建输入框时,都可以将其插入到输入框中。e1.insert(0, last_entered_text) - Reblochon Masque
糟糕,我留下了一些垃圾...我已经清理干净了,你可以再试一次。 - Reblochon Masque
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接