Rhythmbox Python 콘솔을 사용하는 방법 누락되었거나 누군가가 이미 훌륭한 가이드를 작성했으며 내

어쩌면 이것은 분명하고 누락되었거나 누군가가 이미 훌륭한 가이드를 작성했으며 내 (완전한) 인터넷 검색으로 설정하지 못했지만 내 인생에서 파이썬 콘솔을 얻는 방법을 알 수는 없습니다. 리듬 박스 무엇이든 수 있습니다!

플러그인 메뉴에서 활성화 한 다음 도구-> 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 키를 누르는 것 이외의 다른 작업을 수행해야합니까?



답변

리듬 플러그인 작성 가이드는 당신이 리듬을 제어 재생에 파이썬 콘솔에서 사용하고 수정할 수있는 명령의 몇 가지 예제가 있습니다 :

  • 재생 / 일시 중지

    shell.props.shell_player.playpause()
  • 중지

    shell.props.shell_player.stop()
  • 다음 트랙

    shell.props.shell_player.do_next()
  • 재생 대기열에 노래 추가

    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)

답변

모든 파이썬 객체와 마찬가지로 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’와 같이 흥미로운 모양의 속성을 dir () 할 수 있습니다.

살펴볼 또 다른 좋은 장소는 객체에 __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)

답변

문제는 무엇인지 (2.5 년 후) 알게 된 것입니다. 어떤 이유로 든 내 “입력”키는 numlock의 설정 여부에 따라 두 가지 다른 주요 이벤트에 매핑됩니다. numlock이 켜져 있으면을 반환 KP_ENTER하고 numlock이 꺼져 있으면을 반환합니다 Return. 키패드로 숫자를 입력하는 것을 선호하기 때문에 항상 numlock이 켜져 있습니다.

불행히도 Rhythmbox의 python 콘솔은 Return명령을 실행하는 것만 인식 합니다. KP_ENTER이벤트는 줄 바꿈에 들어갑니다 …

그러나 쉬운 수정, 콘솔을 사용할 때 numlock을 끄십시오. 다른 응용 프로그램 (일반적으로 게임) 에서이 문제에 부딪 쳤으므로 더 나은 장기 솔루션을 살펴볼 것입니다 (둘 다 Return어떻게 든 매핑해야 할 수도 있습니다 ).