2013-10-16 20 views
0

我正在研究一個X繪圖儀,如小部件,它可以繪製生動的數據。 我已經在尋找解決方案來實現沿着x軸滾動的,如果這個小部件有很多值,那麼它們就不適合。Python:使用滾動條創建自己的Widget

我不得不去實現它的folling方法:

  • 從支持滾動和子部件,並添加自己的小部件,同時也使在實時更新越來越大的一個小部件獲得: - >哪一方做我需要使用以及如何避免繪製當前不可見的所有東西?
  • 以支持滾動條本身的方式修改我的小部件 - >但是如何?
  • 平局/處理我自己的滾動條 - >在最壞情況:(

我真的搜索建議或例子網頁,但並沒有什麼有關如何在一個很好的方式「構造」自定義控件(超越繪畫的東西)尤指相互作用的情況下... 很抱歉,但我在GTK一般一個新手:/

+0

你可以添加一些代碼或鏈接到你目前正在嘗試?沒有足夠的上下文來告訴你在這裏問什麼。 –

+0

@ChristianTernus 嗯整個代碼是有點多,但我會嘗試添加重要的東西: * ownwidget是基於gtk.Drawingarea) *放置在應用程序窗口上的VBOX *僅使用ATM do_expose觸發器繪製,沒有尺寸要求等。 *內部使用CAIRO繪圖 – MaM

+0

爲什麼你不能使用一個畫布庫,給你所有這些?比如GooCanvas,或者更復雜的東西,Clutter? – gianmt

回答

2

GTK中大部分部件做有滾動條

如果你想滾動。整個小部件,你必須執行GtkScrollable接口。然後,您將該小部件添加到GtkScrolledWindow。滾動的窗口具有滾動條,那些GtkScrollbars鏈接到GtkAdjustments通過GtkScrollable接口set_vadjustmentset_hadjustment傳遞到您的自定義小部件。

如果您只是想自己添加一個滾動條並控制其行爲,那麼您需要以某種方式在您的小部件中添加一個GtkScrollbar,這意味着您也需要將其設置爲容器。

GtkScrollable方法如下,首先要實現vadjustmenthadjustment getter和setter方法,那麼當GtkAdjustments設置,您可以設置其下限和上限和頁面大小(多少小部件是可見的一次) 。之後,您連接value-changed信號,以便在拖動滾動條時刷新小部件。 A GtkScrollable不會檢查滾動條,只會檢查將被綁定到滾動條的調整。在繪製小部件時,您將獲得調整'value屬性以確定滾動條在水平和垂直軸上的移動量。

+0

是的,最後我用GTKScrolledWindow並添加了我所有的東西。這裏是一個gtk.fixed佈局,因爲我喜歡手動計算我的虛擬位置。所以如果小部件移動到當前視圖之外,就會出現滾動條。 Briliant :) – MaM