Страница 1 из 5
Вкладки в pyvcp. Автопереключение
Добавлено: 20 ноя 2013, 09:25
Сергей Саныч
Завел в панели управления две вкладки. Одна для управления частотником, вторая - для датчиков инструмента и центроискателя.
Было бы удобно, чтобы они автоматически переключались в зависимости от режима - ручной или автоматический. Это возможно?
И, чтоб лишний раз не спрашивать - можно ли задавать для вкладок русские названия? У меня не вышло.
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 20 ноя 2013, 09:48
nkp
делал панели на Glade - там переключал вкладки из скрипта...
наверно и тут можно
сделать
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 20 ноя 2013, 12:40
Nick
Да, судя по всему переключения нет и пинов не создается...
Надо дописать...
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 12:28
nkp
кажись в Тк нет таких методов ,как gtk (для вкладок get ,set )
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 13:22
Nick
А вот это не оно:
pathName
raise ?page?
Raise the page page, or return the raised page if page is omitted.
отсюда:
http://tcllib.sourceforge.net/BWman/NoteBook.html#raise
ЗЫ ох уж этот Tk
![Smile :)](./images/smilies/icon_e_smile.gif)
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 15:08
Serg
nkp писал(а):кажись в Тк нет таких методов ,как gtk (для вкладок get ,set )
В Tk нет ничего такого, что можно было-бы сделать клавой/мышом/итп, но нельзя было-бы сделать программно.
![Smile :)](./images/smilies/icon_e_smile.gif)
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 15:10
Nick
Так как все же для notbook, через raise?
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 15:15
Serg
Покажите кусок исходников linuxcnc с этими вкладками (можно в личку), а то мне тут негде исходники развернуть.
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 15:16
nkp
UAVpilot писал(а):В Tk нет ничего такого, что можно было-бы сделать клавой/мышом/итп, но нельзя было-бы сделать программно.
но все же (да простит меня тс за оффтоп)) - зачем pyvcp ,когда есть glade ?
там шире возможности и они "на поверхности" ...
кроссплатформенность - так на емс больно не разгонишся в окошках...)))
UAVpilot писал(а):кусок исходников linuxcnc с этими вкладками
Код: Выделить всё
class pyvcp_tabs(bwidget.NoteBook):
def __init__(self, master, pycomp, cnf={}, **kw):
self.names = kw.pop("names", [])
self.idx = 0
self._require(master)
Widget.__init__(self, master, "NoteBook", cnf, kw)
def update(self, pycomp): pass
def add(self, container, child):
child.pack(side="top", fill="both", anchor="ne")
if self.idx == 1:
self.raise_page(self.names[0])
def getcontainer(self):
if len(self.names) < self.idx:
self.names.append("Tab-%d" % self.idx)
name = self.names[self.idx]
self.idx += 1
return self.insert("end", name, text=name)
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 15:16
Nick
ссылку nkp давал:
http://git.linuxcnc.org/gitweb?p=linuxc ... ac5d7#l739
nkp писал(а):кроссплатформенность - так на емс больно не разгонишся в окошках...)))
UAVpilot писал, что у Tk гораздо
длиннее шире кросплатформенность, чем у GTK ...
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 15:22
Алексс
nkp писал(а):там шире возможности и они "на поверхности" ...
только эта поверхность выше уровня понимания "с разбегу". тем более если на pyvcp уже сделано и как-то работает...
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 16:12
Serg
Nick писал(а):Так как все же для notbook, через raise?
Да, через raise.
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 16:15
Serg
nkp писал(а):но все же (да простит меня тс за оффтоп)) - зачем pyvcp ,когда есть glade ?
Могу путаться в датах, но помнится linuxcnc/emc2 начиналось задолго до появления glade и gtk.
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 16:16
Serg
Алексс писал(а):только эта поверхность выше уровня понимания "с разбегу". тем более если на pyvcp уже сделано и как-то работает...
Это да, gtk менее логично организовано.
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 16:18
Nick
Теперь осталось придумать, как организовать смену по обоим вариантам...
надо наверное сделать два пина, один (вывода)будет показывать raise
второй (ввода) при изменении будет делать reaise num
Кстати, как это в gladevcp сделано?
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 16:21
nkp
Nick писал(а):Кстати, как это в gladevcp сделано?
вот же твой код:
Код: Выделить всё
def page_select(self,widget):
maxpage = self.widgets.notebook.get_n_pages()
page = self.widgets.notebook.get_current_page()
nextpage = page + 1
if nextpage == maxpage:
nextpage = 0
self.widgets.notebook.set_current_page(nextpage)
Код: Выделить всё
def change_mode(self, pin) :
for i in self.modes :
if self.halcomp[i] == True :
self.mode = self.modes[i]
self.widgets.notebook1.set_current_page(self.mode)
self.widgets.notebook2.set_current_page(self.mode)
self.notebook_set() # отображаем вкладку 0 в режимах 1,3,4,6
self.widgets.label9.set_text(str(self.lab.get(self.mode)))
self.change_page()
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 17:13
Nick
мой
![Smile :)](./images/smilies/icon_e_smile.gif)
... не узнаю
![Smile :)](./images/smilies/icon_e_smile.gif)
.
В общем имхо можно вот так сделать, только то, что относится к Tk я не написал - ничего в это не понимаю
![Whish I knew :wik:](./images/smilies/i-dont-know.gif)
:
Код: Выделить всё
class pyvcp_tabs(bwidget.NoteBook):
n = 0
def __init__(self, master, pycomp, cnf={}, haplin=None, **kw):
self.names = kw.pop("names", [])
self.idx = 0
self._require(master)
Widget.__init__(self, master, "NoteBook", cnf, kw)
if halpin == None :
halpin = "tabs."+str(pyvcp_tabs.n)
pyvcp_tabs.n += 1
self.current_pin = halpin+".current"
self.raise_pin = halpin+".raise"
pycomp.newpin(self.current_pin, HAL_S32, HAL_OUT)
pycomp.newpin(self.raise_pin, HAL_S32, HAL_IN)
self.raise_pin_value = 0
def update(self, pycomp):
newvalue = pycomp[self.raise_pin]
if newvalue != self.raise_pin_value:
# вот сюда надо добавить raise self.raise_pin_value
# может еще проверку на слишком большое число!
self.raise_pin_value = newvalue
pycomp[self.current_pin] = # сюда просто raise
def add(self, container, child):
child.pack(side="top", fill="both", anchor="ne")
if self.idx == 1:
self.raise_page(self.names[0])
def getcontainer(self):
if len(self.names) < self.idx:
self.names.append("Tab-%d" % self.idx)
name = self.names[self.idx]
self.idx += 1
return self.insert("end", name, text=name)
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 17:33
Сергей Саныч
Если можно, подскажи, куда это втыкать
![Thinking :thinking:](./images/smilies/think.gif)
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 17:45
nkp
файл .../lib/python/pyvcp_widgets.py
вместо :
Код: Выделить всё
class pyvcp_tabs(bwidget.NoteBook):
def __init__(self, master, pycomp, cnf={}, **kw):
self.names = kw.pop("names", [])
self.idx = 0
self._require(master)
Widget.__init__(self, master, "NoteBook", cnf, kw)
def update(self, pycomp): pass
def add(self, container, child):
child.pack(side="top", fill="both", anchor="ne")
if self.idx == 1:
self.raise_page(self.names[0])
def getcontainer(self):
if len(self.names) < self.idx:
self.names.append("Tab-%d" % self.idx)
name = self.names[self.idx]
self.idx += 1
return self.insert("end", name, text=name)
потом make из директории src
========
зы может ты пользуешь емс в системе - тогда не знаю как правильно сделать...
может скрипт питона просто можно изменить
да - скорей всего должно пройти ...
Re: Вкладки в pyvcp. Автопереключение
Добавлено: 21 ноя 2013, 17:59
Nick
nkp писал(а):может скрипт питона просто можно изменить
да - скорей всего должно пройти ...
Да, пройдет