考虑以下代码:
import tkinter as tk
FONT="Arial 20 bold"
app = tk.Tk()
tk.Entry(app,text="hi", font=FONT).pack()
tk.Entry(app,text="hi", font=FONT).pack()
app.mainloop()
该动画显示,文本内容是相互连接的:一个条目中的更改会自动更新另一个条目。请注意,文本选项不绑定(bind)到任何 stringVar 对象,而是绑定(bind)到字符串文字。
奇怪的是,如果文本选项被初始化为不同文字字符串,例如“hi and Hi”,条目内容就会变得无关。
这是预期的行为吗?
[编辑]:添加对这种奇怪行为的描述:
对于三个条目,具有相同文本的两个条目也被链接:
import tkinter as tk
FONT="Arial 20 bold"
app = tk.Tk()
tk.Entry(app, text="hi", font=FONT).pack()
tk.Entry(app, text="there", font=FONT).pack()
tk.Entry(app, text="hi", font=FONT).pack()
app.mainloop()
即使这些条目被分配给不同的变量:
import tkinter as tk
FONT="Arial 20 bold"
app = tk.Tk()
a = tk.Entry(app, text="hi", font=FONT).pack()
b = tk.Entry(app, text="there", font=FONT).pack()
c = tk.Entry(app, text="hi", font=FONT).pack()
app.mainloop()
最佳答案
问题实际上在于 text
参数。通过传递 text
,您将创建 Entry
小部件的 textvariable
:
import tkinter as tk
FONT="Arial 20 bold"
app = tk.Tk()
a = tk.Entry(app, text="hi", font=FONT)
b = tk.Entry(app, text="there", font=FONT)
c = tk.Entry(app, text="hi", font=FONT)
for i in (a,b,c):
i.pack()
print (i["textvariable"])
app.mainloop()
要解决此问题 - 只需不要将 text
作为参数传递即可。我认为你根本不需要它。
关于python - 输入文本选项 : curious behavior,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56440526/