输入文字选项:好奇行为

时间:2019-06-04 08:55:13

标签: python tkinter

考虑以下代码:

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()

animated view

此动画显示,文本内容彼此连接:更改一个条目会自动更新另一个。请注意,文本选项未绑定到任何stringVar对象,而是绑定到字符串文字

奇怪的是,如果将文本选项初始化为与众不同的拼写字符串,例如“ hi and Hi”,则输入内容将变得无关。

这是预期的行为吗?

[edit]:除了这种奇怪行为的描述之外:

对于三个条目,具有相同文本的两个条目也被链接:

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()

1 个答案:

答案 0 :(得分:4)

问题实际上出在text参数上。通过传递text,您将创建textvariable小部件的Entry

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作为参数。我不认为您仍然需要它。