Вопросы новичка по Glade + HAL
-
magrelo
- Кандидат
- Сообщения: 42
- Зарегистрирован: 27 ноя 2015, 11:53
- Репутация: 0
- Настоящее имя: Andrey
- Контактная информация:
Вопросы новичка по Glade + HAL
Нарисовал панельку с элементом энкодера wheel-outvalue
в postgui.hal обозначил связь
net signal-value myblock.invalue gladevcp.wheel-outvalue
Все работает, и элемент gladevcp.wheel-outvalue в начале = 0
А хотелось бы значение по умолчанию 20 (минимальное для переменной invalue)
В Glade в свойствах объекта wheel не нашел ничего по поводу границ или значений при инициализации элемента.
Через HAL изменить не получается так как пин gladevcp.wheel-outvalue - OUT
Есть какое-нибудь решение? Как вообще правильно менять значение пинов в hal когда уже обозначена связка net?
в postgui.hal обозначил связь
net signal-value myblock.invalue gladevcp.wheel-outvalue
Все работает, и элемент gladevcp.wheel-outvalue в начале = 0
А хотелось бы значение по умолчанию 20 (минимальное для переменной invalue)
В Glade в свойствах объекта wheel не нашел ничего по поводу границ или значений при инициализации элемента.
Через HAL изменить не получается так как пин gladevcp.wheel-outvalue - OUT
Есть какое-нибудь решение? Как вообще правильно менять значение пинов в hal когда уже обозначена связка net?
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
мне кажется проще использовать ,например, компонент scale
http://linuxcnc.org/docs/2.7/html/man/man9/scale.9.html
для начального смещения
а так - только лезть в исходники ,
потому как настройки logwheel ограничены этим:
http://linuxcnc.org/docs/2.7/html/man/man9/scale.9.html
для начального смещения
а так - только лезть в исходники ,
потому как настройки logwheel ограничены этим:
Код: Выделить всё
Direct program control
There a couple ways to directly control the widget using Python.
Using gobject to set the above listed properties:
[widget name].set_property("size",int(value))
[widget name].set_property("cpr",int(value))
[widget name].set_property("show_counts, True)
There are two python methods:
[widget name].get_value()
Will return the counts value as integer
[widget name].set_label("string")
Sets the label content with "string"- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
Необязательно - можно проинитить виджет начальным значением при старте, но придётся написать ещё и код на питоне.nkp писал(а):а так - только лезть в исходники ,
потому как настройки logwheel ограничены этим:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
пробовал такUAVpilot писал(а):еобязательно - можно проинитить виджет начальным значением при старте, но придётся написать ещё и код на питоне.
jogwheel в test.ui
переопределить пытался в файле test.py
прописывалось в ини так:
Код: Выделить всё
EMBED_TAB_COMMAND=halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID} -u test.py test.uiесли можно примерчик готовый
-------------------------------------------------------
зы:
в исходнике (у меня файл /usr/share/pyshared/gladevcp/jogwheel.py)
(из под рута) меняем:
self._counts = 0
на
self._counts = 20
получаем при загрузке начальное значение 20
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
по исходникам еще такой вариант:
прописываем counts как параметр ,и потом его уже изменяем внешним файлом как требуется:
здесь добавлены(изменены) строки:
в test.py:
прописываем counts как параметр ,и потом его уже изменяем внешним файлом как требуется:
Код: Выделить всё
#!/usr/bin/env python
# GladeVcp Widget
# JogWheel widget, to simulate a real jogwheel
# mostly to be used in a sim config
#
#
# Copyright (c) 2013 Norbert Schechner
# based on the pyvcp jogwheel widget from Anders Wallin
#
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
import gtk
import gobject
import math
import hal
# This is needed to make the hal pin, making them directly with hal, will
# not allow to use them in glade without linuxcnc beeing started
from hal_widgets import _HalJogWheelBase
class JogWheel(gtk.DrawingArea, _HalJogWheelBase):
'''
The JogWheel Widget simulates a real jog wheel
show counts = bool , whether you want to display the counts in the widget or not
size = interger , the size of the widget in pixel,
allowed values are in the range from 100 to 500,
default is 300
cpr = integer , The counts per revolution,
allowed values are in the range from 25 to 360,
default is 40
label = string , The label content to display in the upper part of the widget,
default is "" = empty string
'''
__gtype_name__ = 'JogWheel'
__gproperties__ = {
'show_counts' : ( gobject.TYPE_BOOLEAN, 'Display the counts in the widget', 'Display or not the counts value',
True, gobject.PARAM_READWRITE | gobject.PARAM_CONSTRUCT),
'show_scaled_value' : ( gobject.TYPE_BOOLEAN, 'Display the scaled value in the widget', 'Display or not the scaled value',
False, gobject.PARAM_READWRITE | gobject.PARAM_CONSTRUCT),
'size' : ( gobject.TYPE_INT, 'The size of the widget in pixel', 'Set the size of the widget',
100, 500, 200, gobject.PARAM_READWRITE|gobject.PARAM_CONSTRUCT),
'cpr' : ( gobject.TYPE_INT, 'Counts per revolution', 'Set the value of counts per revolution',
25, 360, 40, gobject.PARAM_READWRITE|gobject.PARAM_CONSTRUCT),
'label' : ( gobject.TYPE_STRING, 'label', 'Sets the string to be shown in the upper part of the widget',
"", gobject.PARAM_READWRITE | gobject.PARAM_CONSTRUCT),
'counts': ( gobject.TYPE_INT, 'Counts init', 'Set the value of counts init',
0, 360, 40, gobject.PARAM_READWRITE|gobject.PARAM_CONSTRUCT),
}
__gproperties = __gproperties__
def __init__(self, size = 200, cpr = 40, counts = 33):
super(JogWheel, self).__init__()
# basic settings
self._size = size
self._cpr = cpr
self._angle = 0
self._counts = counts
self._scaled_value = 0
self._allow_motion = False
self._show_counts = True
self._show_scaled_value = False
self._label = ""
# connect our signals
self.connect("destroy", gtk.main_quit)
self.connect("expose-event", self.expose)
self.connect("button_press_event", self._button_press)
self.connect("button_release_event", self._button_release)
self.connect("motion_notify_event", self._motion)
self.connect("scroll_event", self._scroll)
# To use the the events, we have to unmask them
self.add_events(gtk.gdk.BUTTON_PRESS_MASK |
gtk.gdk.BUTTON_RELEASE_MASK |
gtk.gdk.POINTER_MOTION_MASK)
# init the hal pin management
def _hal_init(self):
_HalJogWheelBase._hal_init(self)
self.hal_pin_scale = self.hal.newpin(self.hal_name+".scale", hal.HAL_FLOAT, hal.HAL_IN)
self.hal_pin_scale.set(1.0)
# This function is called from hal_widgets.py
# from hal_update
def get_value(self):
self._scaled_value = self._counts * self.hal_pin_scale.get()
self.queue_draw()
return self._counts
def get_scaled_value(self):
try:
return self._scaled_value
except:
pass
def set_label(self, labelcontent):
self.set_property("label",labelcontent)
# this draws our widget on the screen
def expose(self, widget, event):
# set the sizes according to the propertys
self.set_size_request(self._size, self._size)
self.radius = self._size / 2 - self._size / 60
self.inner_radius = self.radius - self._size / 15
self.dot_radius = self._size / 17
self.dot_pitch_radius = self.inner_radius - self.dot_radius
# create the cairo window
# I do not know why this workes without importing cairo
self.cr = widget.window.cairo_create()
# the area of reactions
self.cr.rectangle(event.area.x, event.area.x, event.area.width, event.area.height)
self.cr.clip()
# calculate the delta angle between the ticks
# and set the angle not to be inbetween ticks
self._delta_a = 2 * math.pi / self._cpr
self._angle = int(self._angle / self._delta_a) * self._delta_a
# call to paint the widget
self._draw_frame()
self._draw_dot()
self._draw_arrow()
# draws the frame, meaning the background
def _draw_frame(self):
w = self.allocation.width
h = self.allocation.height
# draw a black circle
linewith = self._size / 75
if linewith < 1:
linewith = 1
self.cr.set_line_width(linewith)
self.cr.set_source_rgb(0.0, 0.0, 0.0)
self.cr.translate(w/2, h/2)
self.cr.arc(0, 0, self.radius, 0, 2*math.pi)
self.cr.stroke()
# fill the circle with white color
self.cr.set_source_rgb(1.0, 1.0, 1.0)
filldia = self.radius - linewith / 2
self.cr.arc(0, 0, filldia, 0, 2*math.pi)
self.cr.fill()
# draw a smaler circle with a finer line
linewith = self._size / 200
if linewith < 1:
linewith = 1
self.cr.set_line_width(linewith)
self.cr.set_source_rgb(0.0, 0.0, 0.0)
self.cr.arc(0, 0, self.inner_radius, 0, 2*math.pi)
self.cr.stroke()
# fill the inner circle with lightgrey
self.cr.set_source_rgb(0.8, 0.8, 0.8)
filldia = self.inner_radius - linewith / 2
self.cr.arc(0, 0, filldia, 0, 2*math.pi)
self.cr.fill()
# draw the lines for the tiks
self.cr.set_source_rgb(0.0, 0.0, 0.0)
for n in range(0, self._cpr):
start_x = filldia * math.cos(n * self._delta_a)
start_y = filldia * math.sin(n * self._delta_a)
end_x = self.radius * math.cos(n * self._delta_a)
end_y = self.radius * math.sin(n * self._delta_a)
self.cr.move_to(start_x, start_y)
self.cr.line_to(end_x, end_y)
self.cr.stroke()
# this draws the dot, moving around while jogging
def _draw_dot(self):
x = self.dot_pitch_radius * math.cos(self._angle)
y = self.dot_pitch_radius * math.sin(self._angle)
self.cr.set_source_rgb(0.0, 0.0, 0.0)
self.cr.arc(x, y, self.dot_radius, 0, 2*math.pi)
self.cr.fill()
# This draws the small triangle pointing to the tiks
def _draw_arrow(self):
peak_x = (self.radius - self.dot_radius / 2) * math.cos(self._angle)
peak_y = (self.radius - self.dot_radius / 2) * math.sin(self._angle)
edge_x = (self.dot_pitch_radius + self.dot_radius) * math.cos(self._angle)
edge_y = (self.dot_pitch_radius + self.dot_radius) * math.sin(self._angle)
self.cr.move_to(peak_x, peak_y)
delta_x = self.dot_radius / 1.5 * math.sin(self._angle)
delta_y = self.dot_radius / 1.5 * math.cos(self._angle)
self.cr.line_to(edge_x + delta_x, edge_y - delta_y)
self.cr.line_to(edge_x - delta_x, edge_y + delta_y)
self.cr.line_to(peak_x, peak_y)
self.cr.fill()
# Do we want to see the counts value? If so draw it
if (self._show_counts and not self._show_scaled_value) :
self.cr.set_font_size(self._size / 10)
w,h = self.cr.text_extents(str(self._counts))[2:4]
self.cr.move_to(0 - w / 2 , 0 + h / 2)
self.cr.show_text(str(self._counts))
elif self._show_scaled_value :
self.cr.set_font_size(self._size / 10)
w,h = self.cr.text_extents(str(self._scaled_value))[2:4]
self.cr.move_to(0 - w / 2 , 0 + h / 2)
self.cr.show_text(str(self._scaled_value))
# and now we draw the label
if self._label != "":
self.cr.set_font_size(self._size / 10)
w,h = self.cr.text_extents(self._label)[2:4]
self.cr.move_to(0 - w / 2 , 0 - self._size / 10 - h / 2)
self.cr.show_text(str(self._label))
# If the mouse button has been pressed, we will allow "drag and drop"
# we allow that only for the left mouse button
def _button_press(self, widget, event):
if event.button == 1 :
self._allow_motion = True
self._old_angle = self._angle
# stop motion when button has been released
def _button_release(self, widget, event):
self._allow_motion = False
# Jog when motion ocure and button has been pressed
def _motion(self, widget, event):
if self._allow_motion:
x = event.x - widget.get_allocation().width / 2
y = event.y - widget.get_allocation().height / 2
self._angle = math.atan2(y , x)
counts = int(self._angle / self._delta_a)
delta = self._angle - self._old_angle
if delta >= self._delta_a:
self._counts += 1
self._old_angle = self._angle
if delta <= -self._delta_a:
self._counts -= 1
self._old_angle = self._angle
self.queue_draw()
# handle the scroll wheel of the mouse
def _scroll(self, widget, event):
if event.direction == gtk.gdk.SCROLL_UP:
self._counts += 1
if event.direction == gtk.gdk.SCROLL_DOWN:
self._counts -= 1
self._angle = self._counts * self._delta_a
self.queue_draw()
# Get propertys
def do_get_property(self, property):
name = property.name.replace('-', '_')
if name in self.__gproperties.keys():
return getattr(self, name)
else:
raise AttributeError('unknown property %s' % property.name)
# Set propertys
def do_set_property(self, property, value):
try:
name = property.name.replace('-', '_')
if name in self.__gproperties.keys():
setattr(self, name, value)
if name == 'show_counts':
self._show_counts = value
if name == 'show_scaled_value':
self._show_scaled_value = value
if name == "size":
self._size = value
self.set_size_request(self._size, self._size)
if name == "cpr":
self._cpr = value
if name == "counts":
self._counts = value
if name == "label":
if len(str(value)) > 12:
value = str(value)[:12]
self._label = str(value)
self.queue_draw()
else:
raise AttributeError('unknown property %s' % property.name)
except:
pass
# for testing without glade editor:
# to show some behavior and setting options
def main():
window = gtk.Window()
#size = 300
#tiks = 10
# jogwheel = JogWheel(size, tiks)
jogwheel = JogWheel()
jogwheel.set_property('cpr', 40)
jogwheel.set_property('size', 200)
jogwheel.set_property('label', "max. 12 Characters are used !")
window.add(jogwheel)
window.set_title("Jogwheel")
window.set_position(gtk.WIN_POS_CENTER)
window.show_all()
gtk.main()
if __name__ == "__main__":
main()Код: Выделить всё
'counts': ( gobject.TYPE_INT, 'Counts init', 'Set the value of counts init',
0, 360, 40, gobject.PARAM_READWRITE|gobject.PARAM_CONSTRUCT),
def __init__(self, size = 200, cpr = 40, counts = 33):
self._counts = counts
if name == "counts":
self._counts = valueКод: Выделить всё
import hal
import glib
debug = 1
class HandlerClass:
def __init__(self, halcomp,builder,useropts):
self.halcomp = halcomp
self.builder = builder
self.jw = self.builder.get_object('jogwheel1')
self.jw.set_property('label', "test")
self.jw.set_property('counts', int(359))
def get_handlers(halcomp,builder,useropts):
return [HandlerClass(halcomp,builder,useropts)]- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
Примерчик пока не покажу - быстро не вспомнил где это было, а искать пока некогда. Помнится я для этого изучал класс IniFile, который сохраняет значения атрибутов в ini файле...nkp писал(а):если можно примерчик готовый![]()
Это конечно в некотором роде хак, но зато без правки исходников.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
magrelo
- Кандидат
- Сообщения: 42
- Зарегистрирован: 27 ноя 2015, 11:53
- Репутация: 0
- Настоящее имя: Andrey
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
А как с помощью GLADE ввести параметр с плавающей точкой? Добавляю элемент Edit и никаких готовых пинов в HAL не вижу. Надо событие обработчика на py добавлять или где? Что то пока не нашел вразумительного примера по работе с EditBox (((
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
tooledit ??magrelo писал(а): Добавляю элемент Edit
может это не "hal_элемент" ?
-
magrelo
- Кандидат
- Сообщения: 42
- Зарегистрирован: 27 ноя 2015, 11:53
- Репутация: 0
- Настоящее имя: Andrey
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
Да. Я понял, нужно брать элементы которые в Glade находятся в закладке HAL Python. Там правда нет Edit. Только SpinButton имеет тип float и похож на то что надо. Пока не пойму как ему присвоить данные... Они вводятся в поле но не присваиваются пину. Я так понял надо определить функцию on_spinbutton-X_change_value в glade, а тело дописать в handlers.py
Но в документации есть примеры кнопок всяких, а как присвоить данные в spinbutton пока не найду (((
def on_spinbutton-P_change_value(self, hal_pin, data = ???):
...
Но в документации есть примеры кнопок всяких, а как присвоить данные в spinbutton пока не найду (((
def on_spinbutton-P_change_value(self, hal_pin, data = ???):
...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
Присваиваются, если после ввода нажать Enter.magrelo писал(а):Пока не пойму как ему присвоить данные... Они вводятся в поле но не присваиваются пину.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
magrelo
- Кандидат
- Сообщения: 42
- Зарегистрирован: 27 ноя 2015, 11:53
- Репутация: 0
- Настоящее имя: Andrey
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
При нажатии Enter введенное число становится 0.0
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
Это происходит от нечтения документации.magrelo писал(а):При нажатии Enter введенное число становится 0.0
Для SpinBox надо ещё создать объект, в котором будут хранится его параметры, такие как минимум, максимум, шаг и т.п. См. второе поле свойств самого SpinBox'а.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
magrelo
- Кандидат
- Сообщения: 42
- Зарегистрирован: 27 ноя 2015, 11:53
- Репутация: 0
- Настоящее имя: Andrey
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
Да, я нашел ветку про Glade для новичков и в ней про второе поле выравнивания/adjustment без которого ни spinbox ни scale не работает. Но документацию честно пытался найти ))). Где оно описано?
В Меню->CNC->Documentation описываются общие принципы Glade.
Из Glade помошь отсылает к сайтам https://developer.gnome.org/gladeui/3.8/ а куда там дальше не понятно
В http://linuxcnc.org/docs/2.7/html/gui/g ... spinbutton тоже все очень кратко
Понять бы в какой документации копаться надо )))
В Меню->CNC->Documentation описываются общие принципы Glade.
Из Glade помошь отсылает к сайтам https://developer.gnome.org/gladeui/3.8/ а куда там дальше не понятно
В http://linuxcnc.org/docs/2.7/html/gui/g ... spinbutton тоже все очень кратко
Понять бы в какой документации копаться надо )))
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
Доки надо читать про GTK+.
https://www.google.ru/search?q=gtk+widgets
https://www.google.ru/search?q=gtk+widgets
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
magrelo
- Кандидат
- Сообщения: 42
- Зарегистрирован: 27 ноя 2015, 11:53
- Репутация: 0
- Настоящее имя: Andrey
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
Описал функцию обработки нажатия кнопки Glade в файле mypanel.py и она работает
class HandlerClass:
def on_laser_start_pressed(self, widget, data = None):
b = os.system("halcmd getp bitslice.0.out-00")
print b
if b:
os.system("halcmd setp laserbms.temperature1_on false")
else:
os.system("halcmd setp laserbms.temperature1_on true")
bitslice.0.out-00 - побитовая расшифровка слова состояния лазера (00 - генерация)
print b пишет в терминале во время нажатия TRUE или FALSE в зависимости от состояния bitslice.0.out-00
однако if всегда срабатывает как b=0 (((
пробовал if b==True: тоже самое
пробовал if b==TRUE: ругается что не знает что такое TRUE (хотя print пишет
Python версия 2.7
Что может быть не так, ведь print верные значения пишет? Что то с типом данных может?
class HandlerClass:
def on_laser_start_pressed(self, widget, data = None):
b = os.system("halcmd getp bitslice.0.out-00")
print b
if b:
os.system("halcmd setp laserbms.temperature1_on false")
else:
os.system("halcmd setp laserbms.temperature1_on true")
bitslice.0.out-00 - побитовая расшифровка слова состояния лазера (00 - генерация)
print b пишет в терминале во время нажатия TRUE или FALSE в зависимости от состояния bitslice.0.out-00
однако if всегда срабатывает как b=0 (((
пробовал if b==True: тоже самое
пробовал if b==TRUE: ругается что не знает что такое TRUE (хотя print пишет
Python версия 2.7
Что может быть не так, ведь print верные значения пишет? Что то с типом данных может?
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
в b у тебя будет возвращаемый статус самой функции os.system,magrelo писал(а):однако if всегда срабатывает как b=0
а планировалость наверно получить результат bitslice.0.out-00
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
magrelo писал(а):b = os.system("halcmd getp bitslice.0.out-00")
Тут тоже придётся читать книжки, но уже про python.magrelo писал(а):однако if всегда срабатывает как b=0 (((
P.S. Всё работает правильно.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
plotik
- Мастер
- Сообщения: 428
- Зарегистрирован: 10 май 2012, 15:30
- Репутация: 33
- Настоящее имя: Евгений
- Откуда: Rostov-on-Don
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
Виджеты HAL отсутствуют в glade
Система
При запуске
import gobject менял во всех файлах таже фигня.
Система
Код: Выделить всё
uname -a
Linux debian 4.9.0-5-rt-686-pae #1 SMP PREEMPT RT Debian 4.9.65-3+deb9u2 (2018-01-04) i686 GNU/Linux
Код: Выделить всё
cnc@debian:~$ glade -v
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/gladevcp/__init__.py", line 1, in <module>
from hal_pythonplugin import *
File "/usr/lib/python2.7/dist-packages/gladevcp/hal_pythonplugin.py", line 1, in <module>
from hal_widgets import HAL_HideTable
File "/usr/lib/python2.7/dist-packages/gladevcp/hal_widgets.py", line 120, in <module>
class HAL_HBox(gtk.HBox, _HalSensitiveBase):
File "/usr/lib/python2.7/dist-packages/gi/__init__.py", line 64, in __getattr__
raise AttributeError(_static_binding_error)
AttributeError: When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject". See: https://bugzilla.gnome.org/show_bug.cgi?id=709183
GladeUI-Message: 1 missing displayable value for GtkWidget::events
GladeUI-Message: No displayable values for property GtkMenu::anchor-hints
GladeUI-Message: 1 missing displayable value for GtkAboutDialog::license-type
(glade:12712): GladeUI-WARNING **: We could not find the symbol "h_al__hide_table_get_type"
(glade:12712): GladeUI-WARNING **: Could not get the type from "HAL_HideTable""Ты не дрыгайся! Показывай свою гравицаппу. Если фирменная вещь — возьмём!"
"А этот паца́к все время говорит на языках, продолжения которых не знает!"
"А этот паца́к все время говорит на языках, продолжения которых не знает!"
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
LinuxCNC откуда?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
plotik
- Мастер
- Сообщения: 428
- Зарегистрирован: 10 май 2012, 15:30
- Репутация: 33
- Настоящее имя: Евгений
- Откуда: Rostov-on-Don
- Контактная информация:
Re: Вопросы новичка по Glade + HAL
отсюда http://www.linuxcnc.org/testing-stretch-rtpreempt/UAVpilot писал(а):LinuxCNC откуда?
"Ты не дрыгайся! Показывай свою гравицаппу. Если фирменная вещь — возьмём!"
"А этот паца́к все время говорит на языках, продолжения которых не знает!"
"А этот паца́к все время говорит на языках, продолжения которых не знает!"