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"、何もしません!

もちろん、これらはすべて通常のPythonコンソールで機能します。私は、悪魔がここにどのような違いがあるのか​​、手掛かりを持っていません!Enterキーを押す以外のことをすることになっていますか?


ターミナルから「rhythmbox-client -h」を知っていました。このプラグインを認識するための+1。
ロジャン

回答:


8

Rhythmboxはプラグインライティングガイドは、あなたが再生をコントロールしてのRhythmboxを変更するためにはPythonコンソールで使用できるコマンドのいくつかの例があります:

  • 再生/一時停止

    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)

これは役に立ちます。実際、以前にこれを見つけましたが、探しているのは実際にコンソールを使用する方法です。通常のpythonコンソールのようなものですか。コマンドを入力してEnterキーを押しますか?もしそうなら、私のものは壊れています。コマンドを入力してEnterキーを押すと、コード行を実行せずに改行が作成されます。壊れていることがわかっている限り、修正するための支援を求めることができます。私はちょうど私が何か愚かなことをしていないことを確認したかった(そしてそれの文書化された使用を見つけることができなかった!)
TJエリス

それは確かに何かが壊れているように聞こえます。他のプラグインが有効になっていないrhythmbox-0.12.8-0ubuntu7では、コンソールは通常のPythonコンソールと同じように機能print "hello world"します。たとえば、入力してEnterキーを押します。この問題はまだどこにも報告されていないので、Rhythmboxバグトラッカーで新しいバグを開くことを検討してください。
エンドリューク

1
ありがとうございました!壊れていることがわかったので、もう少し調べてバグレポートを提出します。
TJエリス

少なくともUbuntu Trusty tahr 14.04以降、rhythmboxはpython 3.4.0を埋め込みます。したがって、コマンド 'print "hello world"'は構文エラーです;)代わりに、新しいPython 3のprint関数を使用します: 'print( "hello world")'
nealmcb 14

これらの例の一部は、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」など、おもしろそうなプロパティを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)

ゴラムコンソールをまったく動作させることができれば、それは便利です!そのまま、たとえば、dir(rb.Shell)入力してEnterキーを押すと、改行が追加されるだけで何もしません...シェルはOOBで動作しましたか?Ubuntu 10.04にはデフォルトのrhythmboxがインストールされています。...シェルを壊すような変更を加えたものは考えられません。私の通常のPythonコンソール(RBの外は)うまく動作します...
TJエリス

ええ、ええ、私のシェルは修正なしで正常に動作します。
brousch

3

なんてこった、問題が何であるかがわかりました(2.5年後)。何らかの理由で、「入力」キーは、numlockがオンかオフかに応じて2つの異なるキーイベントにマッピングされます。numlockがオンの場合はを返しKP_ENTER、numlockがオフの場合はを返しますReturn。キーパッドで数字を入力することを好むので、私は常にnumlockをオンにしています。

残念ながら、RhythmboxのPythonコンソールはReturnコマンドの実行のみを認識します。KP_ENTERイベントは改行を入力するだけです...

ただし、コンソールを使用する場合は、Numlockをオフにするだけで簡単に修正できます。他のいくつかのアプリケーション(通常はゲーム)でこの問題に遭遇したので、より良い長期的なソリューションを検討します(両方をReturn何らかの方法でマップすることを強制するかもしれません)...


1
他の誰かがこの問題を抱えている場合、長期的な解決策を見つけました: xmodmap -pke > ~/.Xmodmap カスタムレイアウトを作成し、そのファイルの最後に行を追加し、 keysym KP_Enter = Return 実行xmodmap ~/.Xmodmapしてこのセッションの新しいカスタムレイアウトを有効にします。将来のためにそれを自動実行させるには、に次を追加します~/.xinitrcif [ -f $HOME/.Xmodmap ]; then /usr/bin/xmodmap $HOME/.Xmodmap fi
TJエリス

呪いコメントと改行の欠如!にif追加されたステートメント.xinitrcにはthen、前後に改行が必要fiです。
TJエリス

returnnumlockのenterキーの代わりにキーを使用しないのはなぜですか?
ティモ

テンキーのキーではなく、メインの「Enter」キーを使用していました。何らかの理由でnumlockのオン/オフがそのためにも違いを生じました。
TJエリス

CentOS 6.7が、anaconda pythonを使用している場合、NumberPadのEnterキーの効果は、メインキーボードのEnterキーとは少し異なります。NumLockには効果がありませんでした。メインキーボードのEnterキーは「>>>」プロンプトを返しますが、NumberPad Enterキーは空の行を返します。
RJT
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.