使Label()显示Entry()输入,但用引号括起来

时间:2016-12-12 16:56:58

标签: python python-3.x tkinter

当我输入条目“e1”时,标签“l1”更新以显示条目。我计划稍后使用它来在一行中预览多个条目。

我的问题:当我输入条目“e1”时,如何让标签“l1”在其周围显示单引号。只有在条目“e1”中有文本时才会出现引号。如果删除条目中的内容,也应删除它们。

我对这个如此简单的答案很新。

from tkinter import *

root = Tk()

def printEntry():
    complete = var1.get() + var2.get()
    print (complete)

var1 = StringVar()

var2 = StringVar()

e1 = Entry(root, width = 15, textvariable = var1)
e1.pack()

l1 = Label(root, textvariable = var1)
l1.pack()

e2 = Entry(root, width = 15, textvariable = var2)
e2.pack()

l2 = Label(root, textvariable = var2)
l2.pack()

b = Button(root, text = "CONFIRM", command = printEntry)
b.pack()

mainloop()

1 个答案:

答案 0 :(得分:1)

使用trace的{​​{1}}方法可以在每次编辑条目时触发函数:

StringVar

更新:回答有关在报道中加上引号的评论:

from tkinter import *

root = Tk()

def printEntry():
    complete=var1.get() + var2.get()
    print(complete)

def update_l1(*args):
    txt = var1.get()
    if txt:
        l1.configure(text="'%s'" % txt)
    else:
        l1.configure(text='')

def update_l2(*args):
    txt = var2.get()
    if txt:
        l2.configure(text="'%s'" % txt)
    else:
        l2.configure(text='')

var1 = StringVar()
var1.trace("w", update_l1)

var2 = StringVar()
var2.trace("w", update_l2)

e1 = Entry(root, width=15, textvariable=var1)
e1.pack()

l1 = Label(root)
l1.pack()

e2 = Entry(root, width=15, textvariable=var2)
e2.pack()

l2 = Label(root)
l2.pack()

b = Button(root, text="CONFIRM", command=printEntry)
b.pack()

mainloop()

由于某些原因我不明白,如果我使用from tkinter import * root = Tk() def printEntry(): complete=var1.get() print(complete) def update1(*args): txt = var1.get().strip("'") # remove surronding quotes if present if txt: var1.set(r"'%s'" % txt) # add the quotes else: var1.set("") l1.configure(text=var1.get()) # update the label contents var1 = StringVar() var1.trace("w", update1) e1 = Entry(root, width=15, textvariable=var1) e1.pack() l1 = Label(root) l1.pack() b = Button(root, text="CONFIRM", command=printEntry) b.pack() root.mainloop() (引号没有立即出现),标签没有显示与条目相同的文本,所以我更新了{{1在函数l1 = Label(root, textvariable=var1)内部。