Страница 12 из 12

Re: gscreen

Добавлено: 14 янв 2013, 19:23
nkp
Nick писал(а):self.data["%s_abs"% letter] = p[count]
self.data - это - self.data = Data()
так это строки с разных скриптов

self.data["%s_abs"% letter] = p[count] - это строка с emc_interface.py (её нет в gscreen.py)
а self.data = Data() - вот это уже с gscreen.py
и как же :
"А emc_interface.py я так понимаю тут не при чем."

Re: gscreen

Добавлено: 14 янв 2013, 19:27
Nick
тогда есть вот такие еще строки в gscreen.py - они как раз DRO вроде обновляют.

Код: Выделить всё

   def update_position(self,*args):
        # DRO 
        for i in ("x","y","z","a","s"):
            if i == "s":
                self.widgets.s_display.set_value(abs(self.halcomp["spindle-readout.in"]))
                self.widgets.s_display.set_target_value(abs(self.data.spindle_speed))
                self.widgets.s_display2.set_value(abs(self.data.spindle_speed))
            else:
                
                for j in range (0,3):
                    current = self.data.display_order[j]
                    attr = pango.AttrList()
                    if current == _ABS:
                        color = self.data.abs_color
                        data = self.data["%s_abs"%i]
                        #text = "%+ 10.4f"% self.data["%s_abs"%i]
                        label = "ABS"
                    elif current == _REL:
                        color = self.data.rel_color
                        data = self.data["%s_rel"%i]
                        #text = "%+ 10.4f"% self.data["%s_rel"%i]
                        label= "REL"
                    elif current == _DTG:
                        color = self.data.dtg_color
                        data = self.data["%s_dtg"%i]
                        #text = "%+ 10.4f"% self.data["%s_dtg"%i]
                        label = "DTG"
                    if j == 2:
                        if self.data.highlight_major:
                            hlcolor = self.data.highlight_color
                            bg_color = pango.AttrBackground(hlcolor[0],hlcolor[1],hlcolor[2], 0, -1)
                            attr.insert(bg_color)
                        size = pango.AttrSize(30000, 0, -1)
                        attr.insert(size)
                        weight = pango.AttrWeight(600, 0, -1)
                        attr.insert(weight)
                    fg_color = pango.AttrForeground(color[0],color[1],color[2], 0, 11)
                    attr.insert(fg_color)
                    self.widgets["%s_display_%d"%(i,j)].set_attributes(attr)
                    h = " "
                    if current == _ABS and self.data["%s_is_homed"% i]: h = "*"
                    if self.data.diameter_mode and i == 'x': data = data * 2.0
                    if self.data.dro_units == _MM:
                        text = "%s% 10.3f"% (h,data)
                    else:
                        text = "%s% 9.4f"% (h,data)
                    self.widgets["%s_display_%d"%(i,j)].set_text(text)
                    self.widgets["%s_display_%d"%(i,j)].set_alignment(0,.5)
                    self.widgets["%s_display_%d_label"%(i,j)].set_alignment(1,.5)
                    self.widgets["%s_display_%d_label"%(i,j)].set_text(label)

Re: gscreen

Добавлено: 14 янв 2013, 19:33
nkp
Nick писал(а):ни как раз DRO вроде обновляют.
да - они перерисовывают label
но данные берут из Data
вот в этом как раз мой первоначальный вопрос :
как в классе Data обновляются данные
ну наверно он их берет из emc_interface.py
а вот где это прописано??????

Re: gscreen

Добавлено: 15 янв 2013, 10:01
Nick
Что-то я совсем туплю... читаю через слово и ничего не понимаю :freak:
итак, в gscreen в __init__
self.status = emc_interface.emc_status( self.data, linuxcnc)
вызывает emc_interface.py:
def __init__(self, data, emc):
где
self.data = data
и потом уже self.status.periodic(): обновляет self.data от статуса, который на самом деле просто содержит ссылку на self.data от gscreen и обновляет его значения.

Re: gscreen

Добавлено: 15 янв 2013, 18:32
nkp
спасибо Ник!
в этом вопросе разобрался
немного сбивают с толку одинаковые имена
то есть если бы
self.parametr = Data()
self.status = emc_interface.emc_status( self.parametr, linuxcnc)
может быстрей дошло ;)

Re: gscreen

Добавлено: 16 янв 2013, 10:59
Nick
Да, как-то оно странно написано. Хотя вроде автор gscreen только начинает писать на питоне, и вроде это его первая работа - надо отнестись с пониманием :)

Re: gscreen

Добавлено: 16 янв 2013, 11:08
nkp
Nick писал(а):Да, как-то оно странно написано. Хотя вроде автор gscreen только начинает писать на питоне, и вроде это его первая работа - надо отнестись с пониманием
ну да- надо написать ему - что мол не порядок - мне трудно передирать Ваш код :hehehe:
а вообще я понял он примерно тем же занимается ,чем я (только называет это "хак")
а первоисточник - это стандартный touchy от Chris Radek
touchy.rar
(27.74 КБ) 418 скачиваний

Re: gscreen

Добавлено: 02 дек 2014, 22:05
aftaev
И что тема все сдохла? Не будет Lcnc как Сименс выглядеть?

Re: gscreen

Добавлено: 02 дек 2014, 22:22
Serg
aftaev писал(а):И что тема все сдохла? Не будет Lcnc как Сименс выглядеть?
Все перешли в стан gmocappy. :)