需要通过循环for
动态实例化gtk.TreeViewColumn类型的对象,如下例所示:http://dpaste.com/hold/789277/
上面代码的输出是:
tvc_0 = gtk.TreeViewColumn('id', gtk.CellRendererText(), text = 0)
tvc_1 = gtk.TreeViewColumn('Aspecto', gtk.CellRendererText(), text = 1)
tvc_2 = gtk.TreeViewColumn('Impactos', gtk.CellRendererText(), text = 2)
我需要在output
source code
已经尝试过使用getattr,我无法获得结果。有人能帮帮我吗?
拥抱! Juliano的
答案 0 :(得分:0)
关于不使用邪恶exec / eval的可能解决方案:
tuple_val = (
('id', gtk.CellRendererText(), 0),
('Aspectos', gtk.CellRendererText(), 1),
('Impactos', gtk.CellRendererText(), 2),
)
def tree_view_factory(id, renderer, text):
return gtk.TreeViewColumn(id, renderer, text=text)
tvc_0, tvc_1, tvc_2 = map(tree_view_factory, tuple_val)
答案 1 :(得分:-1)
您可以使用exec语句从字符串中动态执行源代码。例如:
exec """
tvc_0 = gtk.TreeViewColumn('id', gtk.CellRendererText(), text = 0)
tvc_1 = gtk.TreeViewColumn('Aspecto', gtk.CellRendererText(), text = 1)
tvc_2 = gtk.TreeViewColumn('Impactos', gtk.CellRendererText(), text = 2)
"""
或者您链接的脚本:
dic = {'0':'id', '1':'Aspecto', '2':'Impacto'}
for coluna in range(0, len(dic.keys())):
exec "tvc_"+str(coluna)+"=gtk.TreeViewColumn('"+dic[str(coluna)]+"', gtk.CellRendererText(), text="+str(coluna)+")"
但小心,执行任意代码字符串可能会导致严重的安全问题。