如何将此python2语句转换为python3?

时间:2015-11-29 20:19:15

标签: python-3.x gtk

我试图更新我在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的新手。

1 个答案:

答案 0 :(得分:0)

PyGobject(又名PyGI)does not export a get_list interface

您可以使用GConf.Value获得GConf.Client.get,然后使用GConf.Value.get_list获取列表。