Страница 1 из 5

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

Добавлено: 20 ноя 2013, 09:25
Сергей Саныч
Завел в панели управления две вкладки. Одна для управления частотником, вторая - для датчиков инструмента и центроискателя.
Снимок-4.png (3298 просмотров) <a class='original' href='./download/file.php?id=21335&sid=ac337c4ef481fdf06eb855d59d274fc7&mode=view' target=_blank>Загрузить оригинал (28.36 КБ)</a>
Снимок-5.png (3298 просмотров) <a class='original' href='./download/file.php?id=21334&sid=ac337c4ef481fdf06eb855d59d274fc7&mode=view' target=_blank>Загрузить оригинал (23.7 КБ)</a>
Было бы удобно, чтобы они автоматически переключались в зависимости от режима - ручной или автоматический. Это возможно?
И, чтоб лишний раз не спрашивать - можно ли задавать для вкладок русские названия? У меня не вышло.

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 :)

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

Добавлено: 21 ноя 2013, 15:08
Serg
nkp писал(а):кажись в Тк нет таких методов ,как gtk (для вкладок get ,set )
В Tk нет ничего такого, что можно было-бы сделать клавой/мышом/итп, но нельзя было-бы сделать программно. :)

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 ?
там шире возможности и они "на поверхности" ...
: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)

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
мой :) ... не узнаю :).

В общем имхо можно вот так сделать, только то, что относится к 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)

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

Добавлено: 21 ноя 2013, 17:33
Сергей Саныч
Если можно, подскажи, куда это втыкать :thinking:

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
========
зы может ты пользуешь емс в системе - тогда не знаю как правильно сделать...
может скрипт питона просто можно изменить :thinking:
да - скорей всего должно пройти ...

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

Добавлено: 21 ноя 2013, 17:59
Nick
nkp писал(а):может скрипт питона просто можно изменить
да - скорей всего должно пройти ...
Да, пройдет