Вкладки в pyvcp. Автопереключение

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Вкладки в pyvcp. Автопереключение

Сообщение Сергей Саныч »

Завел в панели управления две вкладки. Одна для управления частотником, вторая - для датчиков инструмента и центроискателя.
Снимок-4.png (3273 просмотра) <a class='original' href='./download/file.php?id=21335&sid=32ddfa2aac17ee81f42dbb65ebd214ad&mode=view' target=_blank>Загрузить оригинал (28.36 КБ)</a>
Снимок-5.png (3273 просмотра) <a class='original' href='./download/file.php?id=21334&sid=32ddfa2aac17ee81f42dbb65ebd214ad&mode=view' target=_blank>Загрузить оригинал (23.7 КБ)</a>
Было бы удобно, чтобы они автоматически переключались в зависимости от режима - ручной или автоматический. Это возможно?
И, чтоб лишний раз не спрашивать - можно ли задавать для вкладок русские названия? У меня не вышло.
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение nkp »

делал панели на Glade - там переключал вкладки из скрипта...
наверно и тут можно сделать
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Nick »

Да, судя по всему переключения нет и пинов не создается...
Надо дописать...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение nkp »

кажись в Тк нет таких методов ,как gtk (для вкладок get ,set )
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение 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 :)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Serg »

nkp писал(а):кажись в Тк нет таких методов ,как gtk (для вкладок get ,set )
В Tk нет ничего такого, что можно было-бы сделать клавой/мышом/итп, но нельзя было-бы сделать программно. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Nick »

Так как все же для notbook, через raise?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Serg »

Покажите кусок исходников linuxcnc с этими вкладками (можно в личку), а то мне тут негде исходники развернуть.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение nkp »

UAVpilot писал(а):В Tk нет ничего такого, что можно было-бы сделать клавой/мышом/итп, но нельзя было-бы сделать программно.
но все же (да простит меня тс за оффтоп)) - зачем pyvcp ,когда есть glade ?
там шире возможности и они "на поверхности" ...
:thinking:
кроссплатформенность - так на емс больно не разгонишся в окошках...)))
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)
Последний раз редактировалось nkp 21 ноя 2013, 15:17, всего редактировалось 2 раза.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Nick »

ссылку nkp давал: http://git.linuxcnc.org/gitweb?p=linuxc ... ac5d7#l739

nkp писал(а):кроссплатформенность - так на емс больно не разгонишся в окошках...)))
UAVpilot писал, что у Tk гораздо длиннее шире кросплатформенность, чем у GTK ...
Аватара пользователя
Алексс
Почётный участник
Почётный участник
Сообщения: 2210
Зарегистрирован: 20 июл 2012, 15:49
Репутация: 266
Заслуга: IQ32
Настоящее имя: Алексей
Откуда: Прага
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Алексс »

nkp писал(а):там шире возможности и они "на поверхности" ...
только эта поверхность выше уровня понимания "с разбегу". тем более если на pyvcp уже сделано и как-то работает...
Каждая собака, бегущая на поводке впереди хозяина, думает, что ведет его за собой.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Serg »

Nick писал(а):Так как все же для notbook, через raise?
Да, через raise.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Serg »

nkp писал(а):но все же (да простит меня тс за оффтоп)) - зачем pyvcp ,когда есть glade ?
Могу путаться в датах, но помнится linuxcnc/emc2 начиналось задолго до появления glade и gtk.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Serg »

Алексс писал(а):только эта поверхность выше уровня понимания "с разбегу". тем более если на pyvcp уже сделано и как-то работает...
Это да, gtk менее логично организовано.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Nick »

Теперь осталось придумать, как организовать смену по обоим вариантам...
надо наверное сделать два пина, один (вывода)будет показывать raise
второй (ввода) при изменении будет делать reaise num

Кстати, как это в gladevcp сделано?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение 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()
                               
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Nick »

мой :) ... не узнаю :).

В общем имхо можно вот так сделать, только то, что относится к Tk я не написал - ничего в это не понимаю :wik: :

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

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)
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Сергей Саныч »

Если можно, подскажи, куда это втыкать :thinking:
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение 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
========
зы может ты пользуешь емс в системе - тогда не знаю как правильно сделать...
может скрипт питона просто можно изменить :thinking:
да - скорей всего должно пройти ...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Вкладки в pyvcp. Автопереключение

Сообщение Nick »

nkp писал(а):может скрипт питона просто можно изменить
да - скорей всего должно пройти ...
Да, пройдет
Ответить

Вернуться в «LinuxCNC»