Cách sử dụng bảng điều khiển python Rhybeatbox


13

Có lẽ điều này là hiển nhiên và tôi đang thiếu nó, hoặc có thể ai đó đã viết một hướng dẫn tuyệt vời và sự googling (có vẻ mệt mỏi) của tôi không thể bật nó lên, nhưng tôi không thể tìm ra cách để tôi có được cái bàn điều khiển trăn chết tiệt trong nhịp điệu để làm bất cứ điều gì!

Tôi đã kích hoạt nó từ menu plugin và sau đó mở nó bằng Công cụ-> Bảng điều khiển Python.

Nó in

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

Nhưng bất cứ điều gì tôi gõ tại dấu nhắc không làm gì cả ! Tôi đã thử help, tôi đã thử exit(), tôi đã thử print "hello world", không có gì làm!

Tất cả những thứ này hoạt động, tất nhiên, trong một giao diện điều khiển python bình thường. Tôi không biết ma quỷ có gì khác biệt ở đây! Tôi có phải làm gì đó ngoài hit enter không?


Tôi chỉ biết "nhịp hộp-khách hàng -h" từ thiết bị đầu cuối. +1 để nhận biết về plugin này.
Rojan

Câu trả lời:


8

Các Hướng dẫn Viết Rhythmbox Plugins có một số ví dụ về các lệnh bạn có thể sử dụng trong Python console để phát lại kiểm soát và sửa đổi Rhythmbox:

  • Tạm dừng chơi

    shell.props.shell_player.playpause()
  • Dừng lại

    shell.props.shell_player.stop()
  • Dấu vết tiếp theo

    shell.props.shell_player.do_next()
  • Thêm một bài hát vào Hàng đợi chơi

    shell.add_to_queue("file://awsome_song.ogg")
  • Hiển thị một trực quan

    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)

Điều này rất hữu ích và thực sự tôi đã tìm thấy điều này trước đây, tuy nhiên điều tôi đang tìm kiếm là làm thế nào để thực sự sử dụng bàn điều khiển. Có phải nó giống như một giao diện điều khiển python thông thường; gõ một lệnh và nhấn enter? Nếu vậy, thì của tôi bị hỏng. Khi tôi gõ một lệnh và nhấn enter, nó chỉ tạo một dòng mới, mà không thực hiện dòng mã. Miễn là tôi biết nó bị hỏng, thì tôi có thể tìm kiếm sự giúp đỡ để sửa nó; Tôi chỉ muốn chắc chắn rằng mình đã không làm điều gì đó ngớ ngẩn (và không thể tìm thấy bất kỳ việc sử dụng tài liệu nào về nó!)
TJ Ellis

Điều đó thực sự nghe có vẻ như một cái gì đó bị phá vỡ. Trong nhịp điệu-0.12.8-0ubfox7 không kích hoạt các plugin khác, bảng điều khiển hoạt động giống như bảng điều khiển Python thông thường, ví dụ: nhập print "hello world"và sau đó nhấn Enter. Tôi chưa thấy vấn đề này được báo cáo ở bất kỳ nơi nào khác, vì vậy bạn có thể xem xét mở một lỗi mới trong trình theo dõi lỗi Rhybeatbox .
ændrük

1
cảm ơn bạn! bây giờ tôi biết nó bị hỏng, tôi sẽ chọc thêm một chút nữa và nộp báo cáo lỗi.
TJ Ellis

Lưu ý rằng ít nhất là kể từ Ubuntu Trusty tahr 14.04, nhịp điệu nhúng python 3.4.0. Vì vậy, lệnh 'print "hello world"' là lỗi cú pháp;) Thay vào đó, hãy sử dụng chức năng in Python 3 mới: 'print ("hello world")'
nealmcb

Lưu ý rằng một số ví dụ này không còn hoạt động trong Trusty. Xem một số gợi ý về những gì để làm thay vì shell.add_to_queue () ở đây - dù có vẻ phức tạp hơn nhiều, không may: mail.gnome.org/archives/rhythmbox-devel/2011-April/...
nealmcb

6

Như với bất kỳ đối tượng Python nào, bạn có thể tìm hiểu rất nhiều về nó bằng cách sử dụng phương thức dir () trên nó. Điều này sẽ cung cấp cho bạn một nơi tốt để bắt đầu.

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

Sau đó, bạn có thể dir () bất kỳ thuộc tính trông thú vị nào, như 'get_player', có lẽ.

Một nơi tốt khác để tìm là nếu bạn thấy một thuộc tính __doc__ trên đối tượng.

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

thật tiện dụng, nếu tôi có thể làm cho giao diện điều khiển gorram hoạt động! vì nó là, nếu tôi gõ, ví dụ, dir(rb.Shell)và nhấn enter, nó chỉ thêm ngắt dòng và không làm gì cả ... Vỏ của bạn có hoạt động OOB không? Tôi có cài đặt hộp nhịp mặc định trên Ubuntu 10.04 .... Tôi không thể nghĩ bất cứ điều gì tôi đã thay đổi sẽ phá vỡ vỏ. Bảng điều khiển python thông thường của tôi (bên ngoài rb) hoạt động tốt ...
TJ Ellis

Hừm, vỏ của tôi hoạt động tốt mà không cần sửa đổi.
bpych

3

Chúa ơi, tôi mới phát hiện ra vấn đề là gì (2,5 năm sau) vì một số lý do bản đồ khóa "nhập" của tôi đến hai sự kiện quan trọng khác nhau tùy thuộc vào việc bật hay tắt numlock. Khi numlock được bật, nó sẽ trả về KP_ENTERvà khi numlock tắt, nó sẽ trả về Return. Tôi luôn bật numlock, vì tôi thích nhập số bằng bàn phím.

Thật không may, bảng điều khiển python trong Rhybeatbox chỉ nhận ra Returnđể chạy một lệnh. KP_ENTERSự kiện chỉ cần ngắt dòng ...

Nhưng sửa chữa dễ dàng, chỉ cần tắt numlock khi sử dụng bàn điều khiển. Tôi đã gặp phải vấn đề này trong một vài ứng dụng khác (thường là trò chơi), vì vậy tôi sẽ xem xét một giải pháp dài hạn tốt hơn (có thể buộc cả hai phải ánh xạ tới một Returncách nào đó) ...


1
Trong trường hợp người khác gặp vấn đề này, tôi đã tìm một giải pháp dài hạn: xmodmap -pke > ~/.Xmodmap để tạo bố cục tùy chỉnh, sau đó ở cuối tệp đó thêm một dòng keysym KP_Enter = Return rồi chạy xmodmap ~/.Xmodmapđể bật bố cục tùy chỉnh mới cho phiên này. Để làm cho nó tự động chạy trong tương lai, hãy thêm vào như sau ~/.xinitrc:if [ -f $HOME/.Xmodmap ]; then /usr/bin/xmodmap $HOME/.Xmodmap fi
TJ Ellis

bình luận chửi rủa và thiếu dòng ngắt của họ! các iftuyên bố bổ sung vào .xinitrcnhu cầu để có ngắt dòng sau thenvà trước fi.
TJ Ellis

Tại sao bạn không sử dụng returnkhóa thay vì khóa của numlock enter?
Timo

Tôi đã sử dụng phím "Enter" chính, không phải phím trong numpad; vì một số lý do, việc bật / tắt numlock cũng tạo ra sự khác biệt cho cái đó.
TJ Ellis

CentOS 6.7 nhưng với trăn anaconda, phím Enter trên NumberPad có hiệu ứng hơi khác so với phím Enter trên bàn phím chính. NumLock không có hiệu lực. Bàn phím chính Enter sẽ trả về dấu nhắc '>>>', nhưng EnterPad sẽ trả về một dòng trống.
rjt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.