Як користуватися консоллю піттона Rhythmbox


13

Можливо, це очевидно, і я цього пропускаю, або, можливо, хтось уже написав чудовий путівник, і мій (здається вичерпний) гугл не вдається його виправити, але я не можу за все життя зрозуміти, як отримати консоль проклятого пітона в ритбокс робити що- небудь!

Я ввімкнув його з меню плагінів, а потім відкрив його за допомогою Інструменти-> Консоль Python.

Це друкує

You can access the main window through the 'shell' variable :
<rb.Shell object at 0xa6cdd24 (RBShell at 0xa14e000)>
>>> 

Але все, що я набираю в запиті, нічого не робить ! Я намагався help, я намагався exit(), я намагався print "hello world", нічого не робить!

Усі ці речі працюють, звичайно, у звичайній консолі пітона. Я не знаю, в чому тут диявол! Я повинен зробити щось інше, ніж натиснути Enter?


Я просто знав "ritbox-client -h" з терміналу. +1 за ознайомлення з цим плагіном.
Роян

Відповіді:


8

Написання Керівництво Rhythmbox Модулі має кілька прикладів команд , які ви можете використовувати в консолі Python для управління відтворенням і модифікують Rhythmbox:

  • Відтворення / пауза

    shell.props.shell_player.playpause()
  • Стій

    shell.props.shell_player.stop()
  • Наступна доріжка

    shell.props.shell_player.do_next()
  • Додайте пісню до черги Play

    shell.add_to_queue("file://awsome_song.ogg")
  • Відображення візуалізації

    import gst
    goom = gst.element_factory_make ("goom")
    sink = gst.element_factory_make ("ximagesink")
    colour = gst.element_factory_make ("ffmpegcolorspace")
    b = gst.Bin()
    b.add (goom, colour, sink)
    b.add_pad(gst.GhostPad("sink", goom.get_pad("sink")))
    goom.link(colour)
    colour.link(sink)
    shell.get_player().props.player.add_tee(b)
    

Це корисно, і насправді я це раніше знаходив, проте те, що я шукаю, - як реально використовувати консоль. Це просто як звичайна консоль пітона; введіть команду і натисніть клавішу Enter? Якщо так, то міна зламана. Коли я набираю команду і натискаю клавішу Enter, вона просто робить новий рядок, не виконуючи рядок коду. Поки я знаю, що вона зламана, я можу шукати допомоги, щоб її виправити; Я просто хотів переконатися, що я не роблю чогось глупого (і не міг знайти жодного документально використаного!)
TJ Ellis

Це справді звучить так, ніби щось порушено. У pacebox-0.12.8-0ubuntu7 без інших плагінів консоль працює так само, як і звичайна консоль Python, наприклад, введіть print "hello world"і натисніть клавішу Enter. Я не бачу цієї проблеми ще ніде, тому ви можете розглянути можливість відкриття нової помилки в програмі помилок Rhythmbox .
ændrük

1
Дякую! тепер, коли я знаю, що це зламано, я поб'юсь ще трохи і подати звіт про помилку.
TJ Ellis

Зауважте, що принаймні, як для Ubuntu Trusty tahr 14.04, у римбокс вбудовується python 3.4.0. Отже, команда 'надрукувати «привіт світ»' - це синтаксична помилка;) Натомість використовуйте нову функцію друку Python 3: 'print ("привіт світ")'
nealmcb

Зауважте, що деякі з цих прикладів більше не працюють у Trusty. Дивіться деякі підказки, що робити замість shell.add_to_queue () тут - хоча це виглядає набагато складніше, на жаль: mail.gnome.org/archives/rhythmbox-devel/2011-April/…
nealmcb

6

Як і про будь-який об’єкт Python, ви можете дізнатися про нього багато, скориставшись методом dir (). Це дасть вам гарне місце для початку.

You can access the main window through the 'shell' variable :
<rb.Shell object at 0x9e9675c (RBShell at 0x987b018)>
>>> dir(rb.Shell)
['__class__', '__cmp__', '__copy__', '__deepcopy__', '__delattr__', '__dict__',
'__doc__', '__format__', '__gdoc__', '__getattribute__', '__gobject_init__', 
'__grefcount__', '__gtype__', '__hash__', '__init__', '__module__', '__new__', 
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', 'add_to_queue', 'add_uri', 'add_widget', 'append_source',
'chain', 'connect', 'connect_after', 'connect_object', 'connect_object_after',
'disconnect', 'disconnect_by_func', 'do_notify', 'emit', 'emit_stop_by_name',
'freeze_notify', 'get_data', 'get_party_mode', 'get_player',
'get_playlist_manager', 'get_properties', 'get_property',
'get_source_by_entry_type', 'get_ui_manager', 'guess_source_for_uri', 
'handler_block', 'handler_block_by_func', 'handler_disconnect',
'handler_is_connected','handler_unblock', 'handler_unblock_by_func', 'load_uri',
'notebook_set_page', 'notify', 'notify_custom', 'present', 'props',
'register_entry_type_for_source', 'remove_from_queue', 'remove_widget',
'set_data', 'set_properties', 'set_property', 'stop_emission', 'thaw_notify',
'toggle_visibility', 'weak_ref']

Тоді ви можете редагувати () будь-яку цікаву властивість, наприклад, "get_player".

Ще одним хорошим місцем для пошуку є те, якщо ви бачите на об’єкті атрибут __doc__.

>>> print rb.Shell.__doc__
Object RBShell

Signals from RBShell:
  visibility-changed (gboolean)
  visibility-changing (gboolean, gboolean) -> gboolean
  create-song-info (RBSongInfo, gboolean)
  removable-media-scan-finished ()
  notify-playing-entry (gboolean)
  notify-custom (guint, gchararray, gchararray, GdkPixbuf, gboolean)

Properties from RBShell:
  no-registration -> gboolean: no-registration
    Whether or not to register
  no-update -> gboolean: no-update
    Whether or not to update the library
  dry-run -> gboolean: dry-run
    Whether or not this is a dry run
  rhythmdb-file -> gchararray: rhythmdb-file
    The RhythmDB file to use
  playlists-file -> gchararray: playlists-file
    The playlists file to use
  selected-source -> RBSource: selected-source
    Source which is currently selected
  db -> RhythmDB: RhythmDB
    RhythmDB object
  ui-manager -> GtkUIManager: GtkUIManager
    GtkUIManager object
  clipboard -> RBShellClipboard: RBShellClipboard
    RBShellClipboard object
  playlist-manager -> RBPlaylistManager: RBPlaylistManager
    RBPlaylistManager object
  removable-media-manager -> RBRemovableMediaManager: RBRemovableMediaManager
    RBRemovableMediaManager object
  shell-player -> RBShellPlayer: RBShellPlayer
    RBShellPlayer object
  window -> GtkWindow: GtkWindow
    GtkWindow object
  prefs -> RBShellPreferences: RBShellPreferences
    RBShellPreferences object
  queue-source -> RBPlayQueueSource: queue-source
    Queue source
  library-source -> RBLibrarySource: library-source
    Library source
  sourcelist-model -> RBSourceListModel: sourcelist-model
    RBSourcelistModel
  sourcelist -> RBSourceList: sourcelist
    RBSourcelist
  source-header -> RBSourceHeader: source header widget
    RBSourceHeader
  visibility -> gboolean: visibility
    Current window visibility

Signals from GObject:
  notify (GParam)

це зручно, якщо я можу змусити консоль gorram взагалі працювати! як це є, якщо я набираю, наприклад, dir(rb.Shell)і натискаю Enter, він просто додає розрив рядка і нічого не робить ... Чи працює ваша оболонка OOB? У мене за замовчуванням встановлена ​​ритбокс на Ubuntu 10.04 .... Я не можу придумати нічого, що я змінив, який би розбив оболонку. Моя звичайна консоль пітона (за межами rb) працює чудово ...
TJ Ellis

Гм, так, моя оболонка працює чудово, без змін.
брошка

3

Боже, я просто з’ясував, у чому проблема (через 2,5 роки) - чомусь мій "введіть" ключові карти на дві різні ключові події залежно від того, чи numlock увімкнено чи вимкнено. Коли numlock увімкнено, він повертається KP_ENTER, а коли numlock вимкнено, він повертається Return. У мене завжди увімкнено numlock, оскільки я вважаю за краще вводити цифри за допомогою клавіатури.

На жаль, консоль python у Rhythmbox розпізнає лише Returnвиконання команди - KP_ENTERподія просто входить у розрив рядка ...

Але легко виправити, просто вимкніть numlock під час використання консолі. Я зіткнувся з цією проблемою в декількох інших програмах (як правило, в іграх), тому я збираюся розібратися в кращому довгостроковому рішенні (можливо, змушуючи обидва скласти карту Returnякось) ...


1
Якщо у когось іншого є ця проблема, я знайшов довгострокове рішення: xmodmap -pke > ~/.Xmodmap створити власну компоновку, а потім в кінці цього файлу додайте рядок, keysym KP_Enter = Return а потім запустіть, xmodmap ~/.Xmodmapщоб увімкнути новий спеціальний макет для цього сеансу. Щоб зробити це автозапуском на майбутнє, додайте наступне до ~/.xinitrc:if [ -f $HOME/.Xmodmap ]; then /usr/bin/xmodmap $HOME/.Xmodmap fi
TJ Ellis

прокляті коментарі та їх відсутність перерв у рядку! ifзаяву додається до .xinitrcпотреби мати розриви рядків після того, як thenі до fi.
TJ Ellis

Чому б не використовувати returnключ замість ключа numlock enter?
Тимо

Я користувався головною клавішею "Enter", а не тією, що знаходиться в numpad; чомусь увімкнення / вимкнення numlock також змінило значення для цього.
TJ Ellis

CentOS 6.7, але з анакондою пітон, клавіша Enter на NumberPad мала дещо інший ефект, ніж клавіша Enter на головній клавіатурі. NumLock не мав ефекту. Основна клавіатура Enter поверне запит '>>>', але NumberPad Enter поверне порожній рядок.
rjt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.