it-swarm-eu.dev

Verwendung der Rhythmbox python Konsole

Vielleicht liegt das auf der Hand und ich vermisse es, oder vielleicht hat bereits jemand einen tollen Leitfaden geschrieben und mein (scheinbar erschöpfender) Googler schlägt fehl, aber ich kann für mein ganzes Leben nicht herausfinden, wie ich an den verdammten python console in der rhythmbox zu do irgendetwas!

Ich habe es über das Plugin-Menü aktiviert und es dann über Extras-> Python-Konsole geöffnet.

Es druckt

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

Aber alles, was ich an der Eingabeaufforderung eingebe, macht nichts! Ich habe help ausprobiert, ich habe exit() ausprobiert, ich habe print "hello world" ausprobiert, nichts tut etwas!

All diese Dinge funktionieren natürlich in einer normalen python Konsole. Ich habe keine Ahnung, was zum Teufel der Unterschied hier ist! Soll ich etwas anderes tun, als die Eingabetaste zu drücken?

13
TJ Ellis

Heiliger Mist, ich habe gerade herausgefunden, wo das Problem liegt (2,5 Jahre später) - aus irgendeinem Grund weist meine Eingabetaste zwei verschiedenen Tastenereignissen zu, je nachdem, ob die Num-Taste aktiviert oder deaktiviert ist. Wenn die Num-Taste aktiviert ist, wird KP_ENTER zurückgegeben, und wenn die Num-Taste deaktiviert ist, wird Return zurückgegeben. Ich habe immer die Nummernsperre aktiviert, da ich die Eingabe von Nummern über die Tastatur bevorzuge.

Leider erkennt die Konsole python in der Rhythmbox nur Return, um einen Befehl auszuführen - das Ereignis KP_ENTER gibt nur einen Zeilenumbruch ein ...

Aber einfache Lösung: Schalten Sie die NUM-Taste aus, wenn Sie die Konsole verwenden. Ich bin auf dieses Problem in einigen anderen Anwendungen gestoßen (normalerweise in Spielen), daher werde ich nach einer besseren langfristigen Lösung suchen (vielleicht zwingen, beide irgendwie auf Return abzubilden) ...

3
TJ Ellis

Das Rhythmbox Plugins Writing Guide enthält mehrere Beispiele für Befehle, die Sie in der Python - Konsole verwenden können, um die Wiedergabe zu steuern und die Rhythmbox zu ändern:

  • Spielpause

    Shell.props.Shell_player.playpause()
    
  • Halt

    Shell.props.Shell_player.stop()
    
  • Nächster Titel

    Shell.props.Shell_player.do_next()
    
  • Fügen Sie der Play Queue ein Lied hinzu

    Shell.add_to_queue("file://awsome_song.ogg")
    
  • Visualisierung anzeigen

    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)
    
8
ændrük

Wie bei jedem Python -Objekt können Sie mithilfe der dir () -Methode eine Menge darüber herausfinden. Dies gibt Ihnen einen guten Ausgangspunkt.

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']

Sie können dann jede der interessant aussehenden Eigenschaften dir () zuweisen, z. B. 'get_player'.

Ein weiterer guter Ort zum Nachschauen ist, wenn Sie ein __doc__-Attribut für das Objekt sehen.

>>> 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)
6
brousch