我试图更新我在Ubuntu 14.04下使用的SSHMenu.py appindicator,但是在15.04下没有工作。我能够解决代码中的大多数其他问题,直到我完成这一功能:
def add_profile_input(self):
'''
Add a 'profile' combobox input to the HostDialog.
'''
client = GConf.Client.get_default()
list_key = '/apps/gnome-terminal/global/profile_list'
name_key = '/apps/gnome-terminal/profiles/%s/visible_name'
## The problem is this line:
profile_names = [client.get_string(name_key % name) for name in
client.get_list(list_key, 'string')]
self.profile_entry = Gtk.ComboBoxText.new_with_entry()
self.profile_entry.append_text("<None>")
for name in profile_names:
self.profile_entry.append_text(name)
index = 0
if self.host.profile != '' and self.host.profile != "<None>":
index = profile_names.index(self.host.profile) + 1
self.profile_entry.set_active(index)
self.add_input('Profile', widget=self.profile_entry)
运行程序时,我得到了这个输出:
Traceback (most recent call last):
File "bin/testSSHMenu.py", line 935, in btn_add_pressed
item = dialog.invoke()
File "bin/testSSHMenu.py", line 1045, in invoke
dialog = self.build_dialog()
File "bin/testSSHMenu.py", line 1118, in build_dialog
self.add_profile_input()
File "bin/testSSHMenu.py", line 1171, in add_profile_input
client.get_list(list_key, 'string')]
AttributeError: 'Client' object has no attribute 'get_list'
看起来python2 / gtk2没有问题,&#39; get_list&#39;是一个已定义的方法,但尝试将其转换为python3 / gtk3并不起作用,因为没有&#39; get_list&#39;方法
我该如何解决这个问题?你可以说,我是python的新手。
答案 0 :(得分:0)
PyGobject(又名PyGI)does not export a get_list
interface。
您可以使用GConf.Value
获得GConf.Client.get
,然后使用GConf.Value.get_list
获取列表。