当我输入条目“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()
答案 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)
内部。