【问题标题】:Python Entry box takes text input in multiple Entry boxPython 输入框在多个输入框中接受文本输入
【发布时间】:2018-02-12 14:00:27
【问题描述】:

我正在制作一个 GUI 应用程序,其中有 4 个条目部分,如果我在一个条目框中输入文本,则所有条目框都在获取数据。我该如何编码,只有在单击条目框时才应该分别输入...

代码:

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)  

【问题讨论】:

标签: python tkinter


【解决方案1】:
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)

【讨论】:

  • 非常感谢。得到了需要的东西。
  • @BryanOakley,我想我们之前有过这样的对话 :-D 但我不记得我们上次的结论是什么,因此我在上面的语气模棱两可。
  • 所有 tkinter 选项都可以用缩写指定,只要它是明确的。例如,back 代替 backgroundwi 代替 width 等。您不能使用 b 代替 borderwidth,因为它是模棱两可的(tkinter 无法判断您是否指的是 borderwidthbackground)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
相关资源
最近更新 更多