Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 8 ОтправитьПечать
Очень популярная тема (более 25 ответов) wic: Python + PyQt4 (число прочтений - 55236 )
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #30 - 14. Февраля 2011 :: 19:32
Печать  
Yhrik писал(а) 14. Февраля 2011 :: 10:17:
В целом впечатления хорошие.
Хотя Питон не знаю.
А на Шарп с Явой, тоже, наверно, аллергия.
Ролик показывает, что инструментарий, скорей всего, достаточен для like1C.
Важно проектирование системы, концепция, фундамент.
А как формы рисовать разберёмся, проектирование или подбор инструментария и удобство работы программиста, я думаю, не столь важно.
Идея важнее, фундамент.

Сейчас застрял на прослойке к базе данных. Хотелось бы некоторые идеи взять из web2py:

Код
Выбрать все
db.define_table('person',
    Field('name'),
    Field('father', 'reference person'),
    Field('mother', 'reference person'))
>>> father = db.person.with_alias('father')
>>> mother = db.person.with_alias('mother')
>>> db.person.insert(name='Massimo')
1
>>> db.person.insert(name='Claudia')
2
>>> db.person.insert(name='Marco', father=1, mother=2)
3
>>> rows = db().select(db.person.name, father.name, mother.name,
      left=(father.on(father.id==db.person.father),
            mother.on(mother.id==db.person.mother)))
>>> for row in rows:
        print row.person.name, row.father.name, row.mother.name
Massimo None None
Claudia None None
Marco Massimo Claudia 


http://web2py.com/book/default/chapter/06
  
Наверх
 
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #31 - 14. Февраля 2011 :: 20:44
Печать  
еще для таких вещей очень советуют  SqlAlchemy

только зачем брать идеи - можно просто взять все целиком

но я у себя только Qt использую для доступа БД, в основном из-за лени
и прямые запросы к БД мне больше нравятся

  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #32 - 14. Февраля 2011 :: 22:40
Печать  
Я заметил идентификаторы в кириллице. А сложно ли полностью переопределить функционал Питона чтобы 100% иметь идентификаторы в кириллице?
Может быть синонимы или альтернативные зарезервированные слова или, может динамическую перекодировку.
Функционал у Питона очень велик и понятно что щелчком пальцев его не переопределить (да и не обязательно нужно), но иметь и использовать такую возможность полезно. Достаточно переопределить идентификаторы интерфейсных процедур  и функций.

Насчёт  Like1c - считаю, что совсем не обязательно повторять весь функционал 1с. Достаточно принять принцип быстрой доработки кода. Принцип понятности кода и доступности его править под каждого заказчика.

blindvic выложил свои нарабортки. Еще-бы добавил-бы маленький экскурс. Как сделать программку с формочкой и кнопочкой типа "Привет мир". Что-то совсем простое, чтобы понять как стартовать.


  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #33 - 15. Февраля 2011 :: 07:47
Печать  
VSozansky писал(а) 14. Февраля 2011 :: 22:40:
Я заметил идентификаторы в кириллице. А сложно ли полностью переопределить функционал Питона чтобы 100% иметь идентификаторы в кириллице?

не хочется - хотя возможно.
включая эту прчину:

VSozansky писал(а) 14. Февраля 2011 :: 22:40:
Насчёт  Like1c - считаю, что совсем не обязательно повторять весь функционал 1с.


VSozansky писал(а) 14. Февраля 2011 :: 22:40:
Может быть синонимы или альтернативные зарезервированные слова или, может динамическую перекодировку.
Функционал у Питона очень велик и понятно что щелчком пальцев его не переопределить (да и не обязательно нужно), но иметь и использовать такую возможность полезно. Достаточно переопределить идентификаторы интерфейсных процедур  и функций.

Ключевые слова переименовать (if else break, etc.) - можно, но надо поработать.
А вот идентификаторы - имена функций - раз плюнуть.

VSozansky писал(а) 14. Февраля 2011 :: 22:40:
blindvic выложил свои нарабортки. Еще-бы добавил-бы маленький экскурс. Как сделать программку с формочкой и кнопочкой типа "Привет мир". Что-то совсем простое, чтобы понять как стартовать.

Я обновил первый пост - можете скачать исходники и потестить сами. Тестовая конфа уже содержит в себе пищу для размышлений типа "Привет мир!".
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #34 - 16. Февраля 2011 :: 07:27
Печать  
Скачал платформу WIC.  
Скачал, установил питон и указанные прибамбасы.
запустил main.pyw
Пошло.... Окно понравилось.
Понятно что конфигурация находится в папке conf
из рабочих файлов там только
reports Lissajous и Test
все остальное либо открывается либо нет но вываливает массу ошибок в окне сообщений.

Вопросы:
Эта платформа конфигуратор или среда исполнения?
Как быть с неоткрывающимся глобальным модулем?
Чиркани как написать модуль а-ля форма + пару контролов и кнопочек.

А вообще-то понравилось! Супер!


Вдогонку:
Нашел в меню сервис вызов режима конфигуратор.
И настройки подключения к базе данных.

Впечатляет. Респект автору Виктору Варварюку!
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #35 - 16. Февраля 2011 :: 09:57
Печать  
Сорри за баг, вроде исправил (см. первый пост).

Самое интересное - отчет РасчетГрафикаПлатежей. Я там сделал класс типа ТаблицаЗначений, к-й можно привязать к какой-либо таблице на форме.

Работают только Отчеты. В режиме конфигуратора (дизайнера) работают справочники, отчеты, пользователи. Конфигуратор сам есть отчет. Т.е. конфигуратор не отдельный режим работы платформы.


>Как быть с неоткрывающимся глобальным модулем?

Что не работает? на корне дерева конфы правый клик - Редактировать глобальный модуль. Или вручную открыть  - conf/global_module.py.

Чтобы добавить новый отчет:
1. Открыть дерево конфы, ветвь Отчеты.
2. Правый клик. Добавить новый отчет.
3. Правый клик на нем - редактировать форму. Откроется qt-designer
4. Навешать виджетов. В qt-designer должны быть два моих виджета - WDateEdit и WDecimalEdit. Задать виджетам имена. Сохранить форму.
5. Открыть модуль формы  - через контестное меню (откроет notepad) или в папке отчета (module.py).
6. Задать поведение предопределенных процедур
def on_Module_load() : # event called by m_py after it loads module
def on_Form_load() : # event called by m_py after it loads Form
def on_Form_close() : # Form is asked to be closed

Виджеты доступны через переменную form. Т.е. form.myChekcbox.setCheckState(True).
Также есть прослойка для формы в переменной widgets. Можно писать widgets.myChekcbox = True. Прослойка найдет на форме виджет с таким именем и попытается изменить его значение, в зависимости от его типа. Для виджета типа QCheckBox, прослойка вызовет setCheckState, для QLineEdit - setText, и т.п.

В качестве примера модуля и реагирования на события - смотри отчет test.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #36 - 16. Февраля 2011 :: 10:02
Печать  
Почему питон?

1С имеет встроенный язык. Кото-то хотел бы, чтобы он был Луа. Кому-то хотелось бы питон. В Ананасе используют Яваскрипт (мне не нравится).

Раз уж я буду использовать как язык платформы питон, то почему бы и саму платформу на написать на питоне? В этом случае все оказалось очень просто - модули формы загружаются как обычные модули питона. Да и разработка намного быстре чем на компилируемом языке.

Т.е. на данный момент готова среда исполнения. Я вот объектной модели как таковой нет. Нет пока что объекта типа Метаданные из 1С (здесь работы немного).
Самое важное - работы с базой данных. Настройка подключения есть, но самой работы с БД нет.

  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #37 - 17. Февраля 2011 :: 07:57
Печать  
Привет Виктор

Принято.
Формы (отчеты) запускаются из меню Файл> Открыть
А открываются для редактирования либо в qt-designer либо в блокноте через Конфигуратор.

Меню доступа к объектам конфигурации отсутствует. Даже через Конфигуратор его нельзя открыть на исполнение. Только открыть Файл> Открыть.
Не хватает аналога меню Операции из 1с. С доступом к имеющимся объектам из списка.
А почему открывается модуль *.py в блокноте. Вроде IDLE установлен вместе с питоном? Может посоветуешь иной редактор?


Отчет РасчетГрафикаПлатежей работает.
Недачет: печатная форма вообще не выводится на принтер. Наверное где-то кнопка затерялась или я не смог ее узнать.


Глобальным модуль пытался открывать Файл> Открыть, поэтому и ошибки сыпали.

qt-designer не поддерживает идентификаторы в кирилице.

Насчет предопределенных процедур
Каков их список? Это все?
def on_Module_load() : # event called by m_py after it loads module
def on_Form_load() : # event called by m_py after it loads Form
def on_Form_close() : # Form is asked to be closed

Еще вопросик.
Пробовал ли собрать платформу в единый исполняемый фай *.exe
Какая перспектива этого?
Хорошо-бы иметь возможность упаковки в единый пакет платформу и единый пакет конфигурацию и конечно отдельный пакет с базой.

Вдогонку...
Удалось посмотреть концепцию МУРОМЦА?
Там есть светлая мысль о формировании кода генератором из метамодели. Используется для формирования объектов интерфейса, самих объектов, и доступа к БД.
Напиши если заинтересует.
Скину инсталляцию МУРОМЦА. Он заточен под VB6+ msSQL Serv.
Но идея прозрачна.
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #38 - 17. Февраля 2011 :: 09:10
Печать  
>Формы (отчеты) запускаются из меню Файл> Открыть
пока открываются только внешние отчеты и .ui файлы. под внешним отчетом понимается аналог .ert из 1С - набор файлов в папке reports - форма (form.ui), модуль формы (module.py), свойства отчета (report.yaml). Возможно стоило бы для модуля формы дать другое расширение файла, чтобы не было конфузий.
при открытии внешнего отчета - он запускается - открывается форма, инициализируется модуль.
Блокнот для открытия модуля прописан по умолчанию (просто он на всех. Файл w.py:
Код
Выбрать все
def editModule(filePath):
    'Редактировать модуль по указанному пути - открыть редактор исходного кода.'
    if not os.path.isfile(filePath): #file doesn't exist
	  printMessage('Файл модуля не найден: ' + filePath)
	  return
    params = ['notepad', filePath] # здесь проставить желаемый редактор
    subprocess.Popen(params) 


щас исправлю, чтобы открывался IDLE
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #39 - 17. Февраля 2011 :: 09:51
Печать  
Цитата:
Пробовал ли собрать платформу в единый исполняемый фай *.exe
Какая перспектива этого?

прога написана с использованием Python3. py2exe под python3 еще не работает. говорят есть cx_Freeze, но это не приоритет. удобнее сделать портативную версию.

Цитата:
Хорошо-бы иметь возможность упаковки в единый пакет платформу и единый пакет конфигурацию и конечно отдельный пакет с базой.

До этого еще ой как далеко. Это только зачатки системы.

Цитата:
Вдогонку...
Удалось посмотреть концепцию МУРОМЦА?
Там есть светлая мысль о формировании кода генератором из метамодели. Используется для формирования объектов интерфейса, самих объектов, и доступа к БД.
Напиши если заинтересует.
Скину инсталляцию МУРОМЦА. Он заточен под VB6+ msSQL Serv.
Но идея прозрачна.

сложно для меня - я самоучка. делаю как мне кажется лучше. реализацию муромца должен делать тот, кто ее понимает и принимает.


Цитата:
Отчет РасчетГрафикаПлатежей работает.
Недачет: печатная форма вообще не выводится на принтер. Наверное где-то кнопка затерялась или я не смог ее узнать.

сделал печать. пока нет кнопки - предпросмотр открывается сразу после появления печатной формы. надо иметь в виду, что это HTML - для демонастрации. в будущем, наверное, надо будет идти по пути villager'а - через pdf. сделал также использование IDLE для редактирования модулй из дизайнера.

Цитата:
qt-designer не поддерживает идентификаторы в кирилице.

это да. наверное недоработка qt-designer

Цитата:
Насчет предопределенных процедур
Каков их список? Это все?
def on_Module_load() : # event called by m_py after it loads module
def on_Form_load() : # event called by m_py after it loads Form
def on_Form_close() : # Form is asked to be closed

пока вроде да. можно еще добавить, если нужно

обновил файлы в первом сообщении
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #40 - 17. Февраля 2011 :: 13:41
Печать  
Насчет
Цитата:
...Это только зачатки системы....

я думаю необходимо указать на обязательность сборки в единый исполняемый файл. Может быть на первых порах это cx_Freeze или что-то подобное. По определению мы говорим о программе, инструменте для написания прикладных модулей и поставке их заинтересованным лицам (т.е. продаже).
Как можно себе представить продажу приложения состоящего из тысяч файлов и столь-же неустойчивой(если вандалы смогут прикоснуться к коду или просто модулям).
И еще - скажите как Вы собираетесь собрать в пакет в будущем, когда будет сотни и тысячи файлов и большая сложность приложения. Лучший вариант отточить эту процедуру сейчас пока сложность невелика и можно сформулировать основные принципы создания исполняемых пакетов.

Пакет конфигурации сделать еще проще - сначала просто вынести в иную(настраиваемую) папку, а после уже размышлять о пакетах поставки.


Насчет МУРОМЦА
Цитата:
сложно для меня - я самоучка. делаю как мне кажется лучше. реализацию муромца должен делать тот, кто ее понимает и принимает.

Зря отказываешся. В архиве рассылки имеется и разжевано много вещей необходимых для реализации коммерческой системы.


Цитата:
сделал печать. пока нет кнопки - предпросмотр открывается сразу после появления печатной формы. надо иметь в виду, что это HTML - для демонастрации.

Жаль что для демонстрации. Надобы иметь вывод на принтер. Пусть плохой, но вывестись должно.
Кстати а чем плох HTML?
А появится иной, например табличный или pdf будет только плюс.


Напиши пару строк как планировал доступ к базе данных.
И как реализовывать объекты привязанные к БД (справочники, документы и пр.).
  
Наверх
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #41 - 17. Февраля 2011 :: 14:02
Печать  
Вот выдержки из технологии МУРОМЦА (Михаил Баранов)
www.murometz.spb.ru/method.php.htm
ныне сайта нет

Живая ссылка с описанием среды Муромец
http://www.abolsoft.ru/d_60_39_63.html

Цитата:
Методика      

     

Методология разработки программного обеспечения, так или иначе, строится на некотором цикле реализации требований заказчика. В рамках этого цикла вполне возможны повторы различных операций, например, разработка- тестирование или опытная эксплуатация - доработка. Основная проблема классической схемы разработки состоит в том, что фактический результат, который может оценивать реальный пользователь появляется очень поздно. Менять что-либо существенно на этой стадии или уже поздно, или очень дорого.

Использование CASE инструментов существенно ускоряет фазу разработки, но не спасает от основных разочарований, связанных с тем, что заказчик не всегда точно знает, что ему нужно.
Представим, что заказчик немного ошибается в описании своих требований, проектировщик готовит спецификации, на языке едва ли понятном заказчику, и это естественно, поскольку он пишет документацию для программистов или архитекторов проекта. Чаще всего, заказчик с трудом может оценить детали реализации, о которых говорится в спецификации. На этом этапе тоже есть некоторая вероятность, что проектировщик не полностью погрузился в проблемы заказчика и тоже не заметил ошибки заказчика.

Процесс разработки начался, и результат можно будет показать заказчику, только по завершению стадии разработки. Как правило, разработчики не любят показывать версии программ, которые плохо работают, или не позволяют делать какие-то мелочи заявленные в спецификации. это значит, что первый показ реально состоится даже не после разработки, а после достаточно длительного тестирования.

Итак, мы решаемся показать программу заказчику - и именно тут выявляется ошибка в требованиях!

В зависимости от того, какой была начальная ошибка, события могут развиваться самым непредсказуемым образом. Начиная от увеличения сроков проектов, и до отказа оплачивать всю разработку


Что же можно с этим поделать?
Есть классическое решение, которое часто практикуется на больших проектах - создание проекта прототипа. Проблема состоит в том, что мало кто способен объяснить, чем прототип отличается от окончательной версии проекта. Обычно прототип, это просто плохо оттестированный проект, в котором не реализована часть функций, и делается он не так тщательно, как того хочется. Поскольку, заказчик очень редко анализирует исходный код, то настоящий проект часто вырастает из прототипа дополнительным временем тестирования, изменением в дизайне и небольшими доработками. Плохо это или хорошо, сказать сложно, но такой подход помогает снизить риск при неправильных начальных требованиях.

О нашей методике разработки прототипов
Прежде всего, мы можем дать точное определение проекту - прототипу.
Проект - прототип, это работоспособный проект, который создается подсистемой генерации кода на базе хорошо структурированного описания проекта.
Это значит буквально следующее: фактическая работа идет не над программным кодом, а над описанием (метамоделью) проекта.
Реальное программирование не начинается, пока заказчик не согласится с прототипом.
Таким образом, цикл согласования функциональности смещается в самое начало проекта.
В момент завершения разработки прототипа, мы имеем на руках следующие результаты:
  • Модель проекта

  • База данных проекта

  • Документация по проекту

  • Исходный код для каждого из документов

  • Шаблон документации пользователя


Следующий этап разработки состоит из настройки той части интерфейса программ, которая может быть настроена по желанию пользователей, и доработка тех функций, которые лишь намечены в описании модели, но оставлены для ручной реализации. В принципе в этот момент, часть информационной системы, которая относиться к вводу и модификации документов готова, и скорее всего уже не будет меняться. С этого момента начинается разработка отчетов и, если это предполагается логикой информационной системы, разработки бизнес процессов.
Система управления бизнес процессами тесно интегрирована с информационной системой и представляет собой гибкое дополнение к хранилищу документов, которое может работать либо с предопределенными процессами, либо включать в себя полный комплекс средств для создания новых бизнес процессов.
Мы стараемся стандартизировать подходы к разработке документов, отчетов и бизнес процессов, с тем, чтобы свести к минимуму ручную доводку исходного кода, заменив её настройкой. Для достаточно большого количества проектов это вполне возможно, допустимо и даже оправдано.
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #42 - 17. Февраля 2011 :: 14:02
Печать  
Цитата:
Кстати а чем плох HTML?

нельзя получить точные размеры
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #43 - 17. Февраля 2011 :: 14:12
Печать  
villager писал(а) 17. Февраля 2011 :: 14:02:
Цитата:
Кстати а чем плох HTML?

нельзя получить точные размеры

Так это-же не баг а фича.
Зато элементы сами растянуться на лист как это укажет дизайнер.
  
Наверх
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #44 - 17. Февраля 2011 :: 14:22
Печать  
Виталий подскажи книжку полезную по QT. Чтобы поскорей освоиться с виджетами.
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 8
ОтправитьПечать