Импорт объекта Gtk из gi.repository

Еще во времена GTK2 я мог сделать

from gtk import Clipboard

Чтобы получить доступ к буферу обмена из моей программы.

Теперь мы должны импортировать объекты интроспективно, как в:

from gi.repository import Gtk

Я ломал голову, чтобы узнать, есть ли способ импортировать только объект из Gtk, например:

from gi.repository import Gtk.Clipboard

конечно, это приводит к исключению SyntaxError.

Есть ли способ сделать то, что я пытаюсь сделать? Одна из причин, по которой я хотел бы это прямо сейчас, заключается в том, что мне нужен очень легкий способ доступа к буферу обмена для сценария. Я не хочу импортировать весь Gtk, так как это перебор/излишество. Мне просто нужен класс Clipboard, но мне интересны и другие элементы в gi.repository (например, Notify).

Спасибо,

Нарни


person narnie    schedule 19.01.2013    source источник


Ответы (2)


Очень легко.

from gi.repository.Gtk import Clipboard
person Fredrick Brennan    schedule 19.01.2013
comment
Замечательно! Я искал синтаксис для from..import, но так и не нашел, что вы можете сделать это таким образом (я до сих пор не совсем понимаю, как работает gi.repo, но я вижу, что он должен быть похож на другие модули в подпапках). Я должен был подумать о том, чтобы попробовать это!!! Очень признателен. - person narnie; 20.01.2013
comment
@narnie Нет проблем :) Иногда нас тормозят очевидные вещи. - person Fredrick Brennan; 20.01.2013

вы не можете импортировать только объект: вы можете импортировать модуль (Gtk) и добавить имя (буфер обмена) в текущее пространство имен, т.е. они должны быть эквивалентны:

from gi.repository.Gtk import Clipboard

а также

from gi.repository import Gtk
Clipboard = Gtk.Clipboard
person jfs    schedule 19.01.2013