Rhythmbox Python 콘솔을 사용하는 방법


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 키를 누르는 것 이외의 다른 작업을 수행해야합니까?


터미널에서 "rhythmbox-client -h"를 알았습니다. 이 플러그인을 알고 +1합니다.
Rojan September

답변:


8

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

  • 재생 / 일시 중지

    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)

이것은 도움이되며 실제로 이전에 이것을 찾았지만 실제로 찾고있는 것은 실제로 콘솔을 사용하는 방법입니다. 일반적인 파이썬 콘솔과 비슷합니까? 명령을 입력하고 Enter 키를 누르십시오? 그렇다면 내 것이 망가진 것입니다. 명령을 입력하고 Enter 키를 누르면 코드 줄을 실행하지 않고 줄 바꿈을 만듭니다. 그것이 깨 졌다는 것을 알고있는 한, 그것을 고치기위한 도움을 구할 수 있습니다. 방금 내가 멍청한 짓을하지 않았는지 확인하고 싶었습니다. (그리고 문서화 된 용도를 찾지 못했습니다!)
TJ Ellis

그것은 실제로 무언가가 부서진 것처럼 들립니다. 다른 플러그인이 활성화되지 않은 rhythmbox-0.12.8-0ubuntu7에서 콘솔은 일반 Python 콘솔과 동일하게 작동합니다 (예 : 입력 print "hello world"한 후 Enter 키를 누름). 이 문제는 아직 다른 곳에서는보고되지 않으므로 Rhythmbox 버그 추적기 에서 새 버그를 여는 것을 고려할 수 있습니다 .
ændrük

1
감사합니다! 이제는 그것이 깨 졌다는 것을 알았으므로 조금 더 찌르고 버그 보고서를 제출할 것입니다.
TJ Ellis

적어도 우분투 트러스티 tahr 14.04에서 rhythmbox는 python 3.4.0을 포함합니다. 따라서 'print "hello world"'명령은 구문 오류입니다.) 대신 새로운 Python 3 인쇄 함수를 사용하십시오. 'print ( "hello world")'
nealmcb

이 예 중 일부는 더 이상 Trusty에서 작동하지 않습니다. shell.add_to_queue () 대신에해야 할 일에 대한 힌트를 여기에서 보아라. 불행히도 훨씬 복잡해 보인다. mail.gnome.org/archives/rhythmbox-devel/2011-April/…
nealmcb

6

모든 파이썬 객체와 마찬가지로 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)

gorram 콘솔을 전혀 사용할 수 없다면 편리합니다! 예를 들어, dir(rb.Shell)입력하고 Enter 키를 누르면 줄 바꿈 만 추가하고 아무것도하지 않습니다 ... 쉘이 작동합니까? Ubuntu 10.04에 기본 리듬 박스가 설치되어 있습니다 ... 쉘을 깨뜨릴 수있는 변경 사항은 생각할 수 없습니다. 내 일반 파이썬 콘솔 (rb 외부)은 잘 작동합니다 ...
TJ Ellis

흠, 내 껍질은 수정없이 잘 작동합니다.
brousch

3

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

불행히도 Rhythmbox의 python 콘솔은 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 엘리스

returnNumlock 키 대신 키 를 사용하지 않는 이유는 무엇 enter입니까?
Timo

숫자 키패드의 키가 아닌 기본 "Enter"키를 사용하고있었습니다. 어떤 이유로 numlock을 켜고 끄는 것 역시 그 차이를 만들었습니다.
TJ 엘리스

CentOS 6.7이지만 아나콘다 파이썬에서는 NumberPad의 Enter 키가 기본 키보드의 Enter 키와 약간 다른 효과를 나타 냈습니다. NumLock은 효과가 없었습니다. 기본 키보드 Enter는 '>>>'프롬프트를 반환하지만 NumberPad Enter는 빈 줄을 반환합니다.
rjt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.