Enthought traitsui. Динамически обновлять список в графическом интерфейсе - PullRequest
0 голосов
/ 30 октября 2018

OK. Таким образом, я столкнулся с этим препятствием, где я не могу получить графический интерфейс для обновления в зависимости от того, что я делаю. Я много искал и пытался читать, но я почти сошел с ума. Самое близкое, что я получил, - это удалить элемент из «myclass.uncorrex_thing», а затем запустить «edit_traits», но он просто создает новый графический интерфейс поверх старого ...

Резюме: Я получаю список имен файлов из .csv, который имеет много элементов, которые меняются ежедневно. Я просто хочу иметь возможность выбрать имя файла из списка в графическом интерфейсе, нажать кнопку, которая что-то делает с файлом, и проверить это имя в списке .csv, а затем обновить выпадающий список в графическом интерфейсе с помощью обновленного файла .csv.

Вот мой код

class My_List(HasTraits):
    tracker = RecordKeeping()
    uncorrex_items = tracker.get_uncorrected_list() #this creates a list of filenames based on a .csv file
    uncorrex_items.insert(0,'Select file')


class DataFrameEditorDemo(HasTraits): 

    err_correct = PostProcessAutoErrorCorrection() #a separate module for correcting the files

    myclass = Instance(My_List)
    highlighted_thing = Str    
    Calc = Button('Run Corrections')


    traits_view = View( 
                    Item('Calc', label='correct file'),                       
                    Item("highlighted_thing", editor= EnumEditor(name = 'object.myclass.uncorrex_items')),                      
                    title="MyEditor"                                               
                    )

    def _Calc_fired(self):
        if len(self.highlighted_thing) == 8:
            self.err_correct.correct_form(self.highlighted_thing) #this corrects the file selected from the dropdown list 
                   #AND it updates the .csv file so the file should be checked as complete and will not show up when "tracker.get_uncorrected_list()" is run again

1 Ответ

0 голосов
/ 30 октября 2018

ОК, для тех, кто смотрит на это и задается вопросом, я наконец решил свою проблему. В основном пришлось создать класс свойств, который зависит от события (нажатие кнопки). Когда кнопка нажата, highlighted_thing обновляется и запускается функция, которая исправляет форму и обновляет .csv

class DataFrameEditorDemo(HasTraits): 

    err_correct = PostProcessAutoErrorCorrection() #a separate module for correcting the files
    tracker = RecordKeeping() #a separate module for managing the .csv


    highlighted_thing = Property(List, depends_on = 'Calc')
    test = Str
    Calc = Button('Run Corrections')


    traits_view = View( 
                    Item('Calc', label='correct file'),                       
                    Item("test", editor= EnumEditor(name = 'highlighted_thing')),                         
                    title="MyEditor"                                               
                    )

    def _get_highlighted_thing(self):
        return tracker.get_uncorrected_list()


    def _Calc_fired(self):
        if len(self.test) == 8:
            self.err_correct.correct_form(self.test)
...