簡體   English   中英

在 TraitsUI 中使用 BoundsEditor

[英]Usage of BoundsEditor in TraitsUI

我想使用 BoundsEditor(在 TraitsUI 中)進行范圍選擇。 如何訪問高值和低值? 為了測試,我使用 RangeEditor - 它按預期工作(在移動滑塊時打印當前值)。 但是我無法從 BoundsEditor 中獲取任何值。 任何指針表示贊賞。

我使用以下(簡化代碼):

from traits.api \
    import HasTraits, Button, Range
from traitsui.api \
    import View, Item, Group, RangeEditor
from traitsui.qt4.extra.bounds_editor import BoundsEditor

class Parameters(HasTraits):
    rgb_range = Range(0.,1.0)
    range1 = rgb_range
    range2 = rgb_range
    eval_button = Button("Eval")  

    traits_view= View(
        Item('range1')), #editor=RangeEditor()
        Item('range2', editor=BoundsEditor()),
        Item('eval_button'))


    def _range1_changed(self, value):
        print(value)

    def _range2_changed(self, *arg, **kwargs):
        print(arg)

    def _range2_changed(self, *arg, **kwargs):
        print(arg)

    def _range2_low_changed(self, *arg, **kwargs):
        print(arg)

    def _range2_high_changed(self, *arg, **kwargs):
        print(arg)

    def _eval_button_fired(self):
        print(self.range1)
        print(self.range2)


if __name__ == '__main__':
    alg = Parameters()
    alg.configure_traits() 

我剛剛開始學習 Traits,所以我相信其他人可以比我更好地解釋這一點。 我正在使用http://blog.enthought.com/enthought-tool-suite/traits/new-double-slider-editor/#.VgFbYLTgtWQ 中的一個例子。 我聲明了低值和高值的變量,並將它們傳遞給 BoundsEditor()。 然后我聲明了當這些值改變時運行的函數。 我得到了我認為與您要查找的內容接近的內容。

from traits.api \
    import HasTraits, Button, Range, Float
from traitsui.api \
    import View, Item, Group, RangeEditor
from traitsui.qt4.extra.bounds_editor import BoundsEditor

class Parameters(HasTraits):
    rgb_range = Range(0.,1.0)
    range1 = rgb_range
    range2 = rgb_range
    low_val = Float(0.0)
    high_val = Float(1.0)
    eval_button = Button("Eval")  

    traits_view= View(
        Item('range1', editor=RangeEditor()),
        Item('range2', editor=BoundsEditor(low_name = 'low_val', high_name = 'high_val')),
        Item('eval_button'))


    def _range1_changed(self, value):
        print(value)

    def _low_val_changed(self):
        print(self.low_val)

    def _high_val_changed(self):
        print(self.high_val)

    def _eval_button_fired(self):
        print(self.range1)
        print(self.low_val)
        print(self.high_val)

if __name__ == '__main__':
    alg = Parameters()
    alg.configure_traits() 

暫無
暫無

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

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