Python Entry框在多个Entry框

时间:2018-02-12 14:00:27

标签: python tkinter

我正在创建一个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)  

1 个答案:

答案 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确认texttextvariable关键字参数具有相同的效果。通常,您不应该将字符串对象传递给这些参数; 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)