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

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

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

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

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

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

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

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

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

Сообщение Nick »

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

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

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

Да. Пин-то есть (current). Но всегда в 0. Хотелось бы на него вывести номер текущей вкладки.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Вроде как это должно менять состояние пина... может там функция какая-то другая нужна...

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

pycomp[self.current_pin] = bwidget.NoteBook.raise_page(self)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

Serg-tmn писал(а):И все-таки, подскажи, как вывести на пин (current) номер текущей вкладки?
тк он же кажись на select.out
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

не, должен быть что-то типа pyvcp.tabs.current ...

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

self.current_pin = halpin+".current"
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

я к тому , что на пине select.out у нас всегда номер текущей вкладки))
Аватара пользователя
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 »

Nick писал(а):(А если мы вручную переключили на экране?)
я против ручного труда :)
============
надо настроить current ...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

кто тут возвращает текущую вкладку?:
(для просмотра содержимого нажмите на ссылку)
['_Misc__winfo_getint', '_Misc__winfo_parseitem', '__contains__', '__doc__', '__getitem__', '__init__', '__module__', '__setitem__', '__str__', '_bind', '_configure', '_displayof', '_do', '_getboolean', '_getdoubles', '_getints', '_grid_configure', '_nametowidget', '_noarg_', '_options', '_register', '_report_exception', '_require', '_root', '_setup', '_subst_format', '_subst_format_str', '_substitute', '_tclCommands', 'add', 'after', 'after_cancel', 'after_idle', 'bbox', 'bell', 'bind', 'bind_all', 'bind_class', 'bindtabs', 'bindtags', 'cget', 'clipboard_append', 'clipboard_clear', 'clipboard_get', 'colormodel', 'columnconfigure', 'compute_size', 'config', 'configure', 'delete', 'deletecommand', 'destroy', 'event_add', 'event_delete', 'event_generate', 'event_info', 'focus', 'focus_displayof', 'focus_force', 'focus_get', 'focus_lastfor', 'focus_set', 'forget', 'getboolean', 'getdouble', 'getframe', 'getint', 'getvar', 'grab_current', 'grab_release', 'grab_set', 'grab_set_global', 'grab_status', 'grid', 'grid_bbox', 'grid_columnconfigure', 'grid_configure', 'grid_forget', 'grid_info', 'grid_location', 'grid_propagate', 'grid_remove', 'grid_rowconfigure', 'grid_size', 'grid_slaves', 'image_names', 'image_types', 'info', 'insert', 'itemcget', 'itemconfigure', 'keys', 'lift', 'location', 'lower', 'mainloop', 'move', 'nametowidget', 'option_add', 'option_clear', 'option_get', 'option_readfile', 'pack', 'pack_configure', 'pack_forget', 'pack_info', 'pack_propagate', 'pack_slaves', 'pages', 'place', 'place_configure', 'place_forget', 'place_info', 'place_slaves', 'propagate', 'quit', 'raise_page', 'register', 'rowconfigure', 'see', 'selection_clear', 'selection_get', 'selection_handle', 'selection_own', 'selection_own_get', 'send', 'setvar', 'size', 'slaves', 'tk_bisque', 'tk_focusFollowsMouse', 'tk_focusNext', 'tk_focusPrev', 'tk_menuBar', 'tk_setPalette', 'tk_strictMotif', 'tkraise', 'unbind', 'unbind_all', 'unbind_class', 'update', 'update_idletasks', 'wait_variable', 'wait_visibility', 'wait_window', 'waitvar', 'winfo_atom', 'winfo_atomname', 'winfo_cells', 'winfo_children', 'winfo_class', 'winfo_colormapfull', 'winfo_containing', 'winfo_depth', 'winfo_exists', 'winfo_fpixels', 'winfo_geometry', 'winfo_height', 'winfo_id', 'winfo_interps', 'winfo_ismapped', 'winfo_manager', 'winfo_name', 'winfo_parent', 'winfo_pathname', 'winfo_pixels', 'winfo_pointerx', 'winfo_pointerxy', 'winfo_pointery', 'winfo_reqheight', 'winfo_reqwidth', 'winfo_rgb', 'winfo_rootx', 'winfo_rooty', 'winfo_screen', 'winfo_screencells', 'winfo_screendepth', 'winfo_screenheight', 'winfo_screenmmheight', 'winfo_screenmmwidth', 'winfo_screenvisual', 'winfo_screenwidth', 'winfo_server', 'winfo_toplevel', 'winfo_viewable', 'winfo_visual', 'winfo_visualid', 'winfo_visualsavailable', 'winfo_vrootheight', 'winfo_vrootwidth', 'winfo_vrootx', 'winfo_vrooty', 'winfo_width', 'winfo_x', 'winfo_y']
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Вроде как строчка которую я написал (тут) должна выдавать нужный номер страницы. (т.е. raise без параметров.)
Вот выдержка из NoteBook

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

class NoteBook(PagesManager, _Items):
...
    def raise_page(self, page=None):
        if page is None:
            return self.tk.call(self._w, "raise")
        else:
            return self.tk.call(self._w, "raise", page)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

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

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

Сообщение Nick »

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

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

Сообщение nkp »

так работает:

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

       for i in range (self.idx) :
          if bwidget.NoteBook.raise_page(self) == self.names[i]:
              pycomp[self.current_pin] = i
==========
то есть вся функция:

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

   def update(self, pycomp):
      newvalue = pycomp[self.raise_pin]
      if newvalue != self.raise_pin_value:
         u = bwidget.NoteBook.raise_page(self,self.names[pycomp[self.raise_pin]])
         self.raise_pin_value = newvalue
      for i in range (self.idx) :
         if bwidget.NoteBook.raise_page(self) == self.names[i]:
              pycomp[self.current_pin] = i
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

можно по проще:

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

["foo","bar"].index("foo")
Правда если foo не в листе, то выдаст ошибку, но у нас он должен быть там.

(т.е.)

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

pycomp[self.current_pin] = self.names.index(bwidget.NoteBook.raise_page(self))
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

Сообщение nkp »

UAVpilot писал(а):У виджета NoteBook есть команда index.
в этом как будто нет:
(для просмотра содержимого нажмите на ссылку)

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

>>> import bwidget
>>> dir(bwidget.NoteBook)
['_Misc__winfo_getint', '_Misc__winfo_parseitem', '__contains__', '__doc__', '__getitem__', '__init__', '__module__', '__setitem__', '__str__', '_bind', '_configure', '_displayof', '_do', '_getboolean', '_getdoubles', '_getints', '_grid_configure', '_nametowidget', '_noarg_', '_options', '_register', '_report_exception', '_require', '_root', '_setup', '_subst_format', '_subst_format_str', '_substitute', '_tclCommands', 'add', 'after', 'after_cancel', 'after_idle', 'bbox', 'bell', 'bind', 'bind_all', 'bind_class', 'bindtabs', 'bindtags', 'cget', 'clipboard_append', 'clipboard_clear', 'clipboard_get', 'colormodel', 'columnconfigure', 'compute_size', 'config', 'configure', 'delete', 'deletecommand', 'destroy', 'event_add', 'event_delete', 'event_generate', 'event_info', 'focus', 'focus_displayof', 'focus_force', 'focus_get', 'focus_lastfor', 'focus_set', 'forget', 'getboolean', 'getdouble', 'getframe', 'getint', 'getvar', 'grab_current', 'grab_release', 'grab_set', 'grab_set_global', 'grab_status', 'grid', 'grid_bbox', 'grid_columnconfigure', 'grid_configure', 'grid_forget', 'grid_info', 'grid_location', 'grid_propagate', 'grid_remove', 'grid_rowconfigure', 'grid_size', 'grid_slaves', 'image_names', 'image_types', 'info', 'insert', 'itemcget', 'itemconfigure', 'keys', 'lift', 'location', 'lower', 'mainloop', 'move', 'nametowidget', 'option_add', 'option_clear', 'option_get', 'option_readfile', 'pack', 'pack_configure', 'pack_forget', 'pack_info', 'pack_propagate', 'pack_slaves', 'pages', 'place', 'place_configure', 'place_forget', 'place_info', 'place_slaves', 'propagate', 'quit', 'raise_page', 'register', 'rowconfigure', 'see', 'selection_clear', 'selection_get', 'selection_handle', 'selection_own', 'selection_own_get', 'send', 'setvar', 'size', 'slaves', 'tk_bisque', 'tk_focusFollowsMouse', 'tk_focusNext', 'tk_focusPrev', 'tk_menuBar', 'tk_setPalette', 'tk_strictMotif', 'tkraise', 'unbind', 'unbind_all', 'unbind_class', 'update', 'update_idletasks', 'wait_variable', 'wait_visibility', 'wait_window', 'waitvar', 'winfo_atom', 'winfo_atomname', 'winfo_cells', 'winfo_children', 'winfo_class', 'winfo_colormapfull', 'winfo_containing', 'winfo_depth', 'winfo_exists', 'winfo_fpixels', 'winfo_geometry', 'winfo_height', 'winfo_id', 'winfo_interps', 'winfo_ismapped', 'winfo_manager', 'winfo_name', 'winfo_parent', 'winfo_pathname', 'winfo_pixels', 'winfo_pointerx', 'winfo_pointerxy', 'winfo_pointery', 'winfo_reqheight', 'winfo_reqwidth', 'winfo_rgb', 'winfo_rootx', 'winfo_rooty', 'winfo_screen', 'winfo_screencells', 'winfo_screendepth', 'winfo_screenheight', 'winfo_screenmmheight', 'winfo_screenmmwidth', 'winfo_screenvisual', 'winfo_screenwidth', 'winfo_server', 'winfo_toplevel', 'winfo_viewable', 'winfo_visual', 'winfo_visualid', 'winfo_visualsavailable', 'winfo_vrootheight', 'winfo_vrootwidth', 'winfo_vrootx', 'winfo_vrooty', 'winfo_width', 'winfo_x', 'winfo_y']
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Я не знаю как это в питоне сделано, а в Tk есть команда NoteBook, которая создаёт соотв. виджет, а уже у виджета есть команда index.

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

$ tclsh
% package require BWidget
1.9
% NoteBook .nb
.nb
% .nb insert 0 page1
.nb.fpage1
% .nb insert 1 page2
.nb.fpage2
% .nb insert 2 page3 
.nb.fpage3
%
% .nb index page2
1
% .nb index page3
2
% 
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

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

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

Так эта... всё уже Вкладки в pyvcp. Автопереключение #56 работает.
Чудес не бывает. Бывают фокусы.
Ответить

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