Python:使用滚动条创建自己的Widget

时间:2013-10-16 18:34:37

标签: python gtk custom-controls scrollbar pygtk

我正在开发一个类似于X-plotter的小工具,可以实时绘制数据。 我已经搜索了一个解决方案来实现沿着x轴滚动,如果小部件有很多值,那么它们就不合适了。

我有实现它的方法:

  • 派生自支持滚动和子窗口小部件的窗口小部件,并添加我自己的窗口小部件,同时在实时更新期间使其变得越来越大: - >我需要使用哪个父级,如何避免绘制当前不可见的所有内容?
  • 以支持滚动条本身的方式修改我的小部件 - >但是如何?
  • 绘制/处理我自己的滚动条 - >最坏情况:(

我真的在网上搜索了一些建议或示例,但是没有任何关于如何以一种好的方式“构建”自定义控件(尤其是绘制内容)。在互动的情况下...... 对不起,我一般是GTK的新手:/

1 个答案:

答案 0 :(得分:2)

Gtk中的大多数小工具都有滚动条。

如果要滚动整个小部件,则必须实现GtkScrollable接口。然后,将小部件添加到GtkScrolledWindow。滚动窗口包含滚动条,GtkScrollbarsGtkAdjustments链接,通过GtkScrollable界面set_vadjustmentset_hadjustment传递到您的自定义小部件。

如果您只想添加滚动条并自行控制其行为,则需要以某种方式在窗口小部件中添加GtkScrollbar,这意味着您还需要将其设置为容器。

GtkScrollable方法如下,首先实施vadjustmenthadjustment设置者和获取者,然后设置GtkAdjustments时,设置其下限和上限和页面大小(一次可见多少小部件)。之后,连接他们的value-changed信号,以便在拖动滚动条时刷新窗口小部件。 GtkScrollable无法检查滚动条,只检查将绑定到滚动条的调整。绘制窗口小部件时,您将获得调整“value属性,以确定滚动条在水平和垂直轴上移动了多少。”