모든 입력 위젯에 동일한 변수가 지정됩니다. 각각에 대해 별도의 변수를 만들거나 textvariable1
옵션을 사용하지 않아야합니다. 이 옵션은 필요하지 않습니다. 위젯 자체의 메소드를 사용하여 위젯의 내용을 가져오고 설정할 수 있습니다. textvariable
은 주로 편의상 사용됩니다 (변수가 변경 될 때 알 수 있도록 변수에 추적을 적용하는 것이 좋기 때문에). 여기
5 개 항목, 목록으로 다른 다섯 가지의 값을 보여줍니다 여섯 번째 항목이 인위적인 예입니다 :
import tkinter as tk
import ttk
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.size=5
self.vars = {}
for i in range(self.size):
self.vars[i] = tk.StringVar()
entry = ttk.Entry(self, textvariable=self.vars[i])
entry.pack(side="top", fill="x")
self.vars[i].trace("w", self.callback)
# this entry will show the other values as a list
self.e0Var = tk.StringVar()
self.e0 = ttk.Entry(self, textvariable=self.e0Var)
self.e0.pack(side="top", fill="x", pady=(4,0))
# call the callback once to establish the initial value
self.callback()
def callback(self, *args):
values = []
for i in range(self.size):
values.append(self.vars[i].get())
# make a comma separated list and store in e0Var
self.e0Var.set(str(values))
app = App()
app.mainloop()
** 당신이 잘못 뭐라고 ** 그들은 모두 없습니다. 'cant_entry'에 링크되어 있습니다. 링크는 모든 항목이'textvariable' 옵션에 대해 동일한 변수를 사용하고 있기 때문에 발생합니다. –
mm. 저는 Tkinter에 대한 엄청난 전문가는 아니지만, 저는 그들이 모두 같은 변수에 배정되었음을 알았습니다. – user1122107