簡體   English   中英

滾動條在最近的chaco版本中不起作用

[英]scrollbar does not work in recent chaco releases

該程序在chaco 3.2中運行良好,但是在chaco 4中,滾動條根本不顯示。

我想找到問題或找到解決方法。

PanTool可能是一種解決方法,但這將與鼠標使用的某些線形光標沖突。

#!/usr/bin/env python

# Major library imports
from numpy import linspace
from scipy.special import jn

# Enthought library imports
from enthought.enable.api import Component, ComponentEditor
from enthought.traits.api import HasTraits, Instance
from enthought.traits.ui.api import Item, Group, View

# Chaco imports
from enthought.chaco.api import ArrayPlotData, VPlotContainer, \
    Plot, OverlayPlotContainer, add_default_axes, add_default_grids
from enthought.chaco.plotscrollbar import PlotScrollBar
from enthought.chaco.tools.api import PanTool, ZoomTool

#===============================================================================
# # Create the Chaco plot.
#===============================================================================
def _create_plot_component():

    # Create some x-y data series to plot
    x = linspace(-2.0, 10.0, 100)
    pd = ArrayPlotData(index = x)
    for i in range(5):
        pd.set_data("y" + str(i), jn(i,x))

    # Create some line plots of some of the data
    plot1 = Plot(pd)
    plot1.plot(("index", "y0", "y1", "y2"), name="j_n, n<3", color="red")[0]
    p = plot1.plot(("index", "y3"), name="j_3", color="blue")[0]

    # Add the scrollbar
    plot1.padding_top = 0

    p.index_range.high_setting = 1
    # Create a container and add our plots
    container = OverlayPlotContainer(padding = 5,fill_padding = True,
                                     bgcolor = "lightgray", use_backbuffer=True)
    hscrollbar = PlotScrollBar(component=p, mapper=p.index_mapper,axis="index", resizable="",use_backbuffer = False,
                               height=15,position=(0,0))
    hscrollbar.force_data_update()

    plot1.overlays.append(hscrollbar)


    hgrid,vgrid = add_default_grids(plot1)
    add_default_axes(plot1)
    container.add(plot1)

    container.invalidate_and_redraw()
    return container

#===============================================================================
# Attributes to use for the plot view.
size=(900,500)
title="Scrollbar example"

#===============================================================================
# # Demo class that is used by the demo.py application.
#===============================================================================
class Demo(HasTraits):
    plot = Instance(Component)

    traits_view = View(
                    Group(
                        Item('plot', editor=ComponentEditor(size=size),
                             show_label=False),
                        orientation = "vertical"),
                    resizable=True, title=title
                    )

    def _plot_default(self):
         return _create_plot_component()

demo = Demo()

if __name__ == "__main__":
    demo.configure_traits()

#--EOF---

我們調查了enable api( https://github.com/enthought/enable )代碼中的一些問題,這些問題不允許滾動條在wx后端顯示。

以下補丁解決了該問題。

還有其他問題,例如高度設置無效,我們將繼續進行調查。

diff --git a/enable/wx/scrollbar.py b/enable/wx/scrollbar.py
index 02d0da0..003cc90 100644
--- a/enable/wx/scrollbar.py
+++ b/enable/wx/scrollbar.py
@@ -136,7 +136,7 @@
     # We have to do this flip_y business because wx and enable use opposite
     # coordinate systems, and enable defines the component's position as its
     # lower left corner, while wx defines it as the upper left corner.
-        window = getattr(gc, "window", None)
+        window = getattr(self, "window", None)
     if window is None:
         return
     wx_ypos = window._flip_y(wx_ypos)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM