如何使用Rhythmbox python控制台


13

也许这很明显,我很想念它,或者也许某人已经写了一个不错的指南,而我(似乎详尽无遗)的谷歌搜索却无法打开它,但是我无法终生搞清楚如何在该计算机上安装darn python控制台。 rhythmbox 任何事情!

我已经从插件菜单启用了它,然后使用工具-> 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,用于了解此插件。
罗詹2010年

Answers:


8

Rhythmbox插件编写指南》提供了几个命令示例,您可以在Python控制台中使用这些命令来控制播放和修改Rhythmbox:

  • 播放/暂停

    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 Ellis 2010年

确实听起来好像有些东西坏了。在没有启用其他插件的rhythmbox-0.12.8-0ubuntu7中,该控制台的工作方式与常规Python控制台相同,例如,键入print "hello world",然后按Enter。我尚未在其他任何地方看到此问题,因此您可以考虑在Rhythmbox Bug Tracker中打开一个新Bug 。
ændrük

1
谢谢!现在我知道它已经坏了,我会再戳一点并提交一个错误报告。
TJ Ellis 2010年

请注意,至少从Ubuntu Trusty tahr 14.04起,rhythmbox嵌入了python 3.4.0。因此,命令'print“” hello world“'是语法错误;)而是使用新的Python 3打印函数:'print(” hello world“)'
nealmcb 2014年

请注意,其中一些示例在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']

然后,您可以dir()任何看起来有趣的属性,例如“ 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键,它只会添加一个换行符,并且什么也不做...您的shell是否正常工作?我在Ubuntu 10.04上安装了默认的rhythmbox。...我想不到我所做的任何更改都会破坏外壳。我的常规python控制台(在rb之外)工作得很好...
TJ Ellis

嗯,是的,我的外壳无需任何修改即可正常工作。
brousch 2010年

3

天哪,我才发现问题出在哪儿(2.5年后)—由于某种原因,我的“输入”键映射到两个不同的键事件,具体取决于数字锁是打开还是关闭。启用KP_ENTERnumlock时,返回Return;禁用numlock时,返回。我总是启用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 Ellis

诅咒评论和缺乏换行符!if添加到的语句.xinitrc需要在之后then和之前有换行符fi
TJ Ellis

为什么不使用return密钥而不是numlock的enter密钥?
Timo 2013年

我使用的是主“ Enter”键,而不是数字键盘中的那个。出于某种原因,启用/禁用numlock也会对此有所不同。
TJ Ellis

CentOS 6.7,但带有anaconda python,NumberPad上的Enter键与主键盘上的Enter键效果略有不同。NumLock无效。主键盘的Enter键将返回“ >>>”提示,而NumberPad Enter键将返回空行。
rjt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.