问题描述
我正在制作一个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楼
Ihr = Entry(app,text="...")
Imin = Entry(app,text="...")
我怀疑问题出在这两行,尤其是text
关键字参数。
乍一看我没有看到的行为text
,但我猜他们的行为有点像textvariable
说法。
由于它们都指向同一个“ ...”对象,因此更改一个条目将更改另一个。
不要使用text
参数来设置Entries的文本。
请改用.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)