我正在创建一个GUI应用程序,其中我有4个Entry部分,如果我在一个Entry框中输入文本,则所有Entry框都在获取数据。如何进行编码,只有点击条目框时才应分别输入...
代码:
from Tkinter import *
def time():
t1h=int(Ihr.get())
t1m=int(Imin.get())
t2h=int(Ohr.get())
t2m=int(Omin.get())
app = Tk()
app.title("VM")
app.geometry("150x210")
app.resizable(0,0)
note = Label(app, text="Clock IN Time :")
note.place(x=10, y=10)
Ihr = Entry(app,text="...")
Ihr.place(x=10, y=30,width="30")
Ihr.focus()
note = Label(app, text="::")
note.place(x=43, y=30)
Imin = Entry(app,text="...")
Imin.place(x=60, y=30,width="30")
note = Label(app, text="(hr)")
note.place(x=12, y=50)
note = Label(app, text="(min)")
note.place(x=58, y=50)
答案 0 :(得分:3)
Ihr = Entry(app,text="...")
Imin = Entry(app,text="...")
我怀疑问题出现在这两行上,特别是text
关键字参数。乍一看,我没有看到text
documented anywhere的行为,但我猜他们的行为类似于textvariable
。由于它们都指向相同的“...”对象,因此更改一个条目将改变另一个条目。
不要使用text
参数来设置条目的文本。请改用.insert
方法。
Ihr = Entry(app)
Ihr.insert(0, "...")
Imin = Entry(app)
Imin.insert(0, "...")
更新
Bryan Oakley确认text
和textvariable
关键字参数具有相同的效果。通常,您不应该将字符串对象传递给这些参数; StringVar是最常规的。您可能有兴趣在这里使用StringVars,因为您可以使用他们的.set
方法来设置Entry对象的内容,而不必使用可能更复杂的.insert
方法。
Ihr_var = StringVar()
Ihr_var.set("...")
Ihr = Entry(app,text=Ihr_var)
Imin_var = StringVar()
Imin_var.set("...")
Imin = Entry(app,text=Imin_var)