我的代码的这一部分是问题:我想通过在条目小部件中输入文本来为Name_List添加名称。然后使用“添加”按钮通过函数add_name将项目插入Name_List。
import tkinter as tk
from tkinter import *
Name_List = []
...
class NamePage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
name=StringVar()
name_entry= tk.Entry(self, text="Enter name:", textvariable=name)
name_entry.pack()
add_button= tk.Button(self, text="Add",
command=lambda: self.add_name(name))
add_button.pack()
To_Role_List= tk.Button(self, text="Assign Roles",
command=lambda: self.print_namelist())
To_Role_List.pack()
def add_name(self,name,i=0):
Name_List.insert(i, name)
print(Name_List)
i+=1
def print_namelist(self):
for i in [0,len(Name_List)]:
print (Name_List[i])
app=TOS_outline()
app.mainloop()
我的结果是,在Entry小部件中输入名称“Alpha”后,似乎是这样(当然使用打印):
[<tkinter.StringVar object at 0x03E7D650>]
我需要更改/修复什么?
答案 0 :(得分:1)
您将变量传递给.insert
而不是其值。 Name_List.insert(i, name)
必须为Name_List.insert(i, name.get())
。
答案 1 :(得分:1)
如果你想使用python列表,不要使用像:
这样的计数器或范围def add_name(self,name,i=0): Name_List.insert(i, name) print(Name_List) i+=1 def print_namelist(self): for i in [0,len(Name_List)]: print (Name_List[i])
改为使用:
def add_name(self,name): Name_List.append(name) print(Name_List) def print_namelist(self): for name in Name_List: print (name)
使用get()获取StringVar对象的值
nombre = StringVar() id_art = IntVar() nombre.set("Python para impacientes") id_art.set(1) blog = ttk.Entry(ventana, textvariable=nombre, width=25) arti = ttk.Label(ventana, textvariable=id_art) print('Blog:', nombre.get()) print('Id artículo:', id_art.get())
示例来自:http://python-para-impacientes.blogspot.com.es/2016/02/variables-de-control-en-tkinter.html(西班牙语)