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



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
wic: Python + PyQt4
18. Декабря 2010 :: 18:39
Печать  
ЧТо вы об этом думаете?
http://www.youtube.com/watch?v=x91NMtTYeZk


Исходники прикреплены. Для запуска требуется:
Python 3.1.3 Windows x86 MSI Installer http://python.org/download/
PyQt-Py3.1-x86-gpl-4.8.3-1.exe http://www.riverbankcomputing.co.uk/software/pyqt/download
PyYAML-3.09.win32-py3.1.exe http://pyyaml.org/wiki/PyYAML


Запускать main.pyw
« Последняя редакция: 17. Февраля 2011 :: 10:24 - blindvic »  

wic.7z ( 1573 KB | Загрузки )
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4 == 1C?
Ответ #1 - 18. Декабря 2010 :: 20:37
Печать  
Прикольно, но питон я в гробу видел..
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4 == 1C?
Ответ #2 - 19. Декабря 2010 :: 00:02
Печать  
Цитата:
Python + PyQt4 == 1C

слишком сильно сказано...

видно мало...

не видно отчетов (html не в счет)
не видно работы со БД (создание ГУИ)
много исходников (как такое распространять? или обновлять?)

да много там еще чего...

ну похоже на 1с внешне.
А зачем?
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
wic
Ответ #3 - 19. Декабря 2010 :: 09:11
Печать  
villager писал(а) 19. Декабря 2010 :: 00:02:
Цитата:
Python + PyQt4 == 1C

слишком сильно сказано...

это точно. просто не знал как озаглавить тему

>не видно отчетов (html не в счет)
>не видно работы со БД (создание ГУИ)

да, всего этого нет. хотел услышать первые впечталения.

Может кого-нибудь заинтересует и поможет развивать.

>ну похоже на 1с внешне. А зачем?
это не баг - а фича. речь не о внешней схожести, а структурной. легче будет 1С-никам использовать. Кроме того, 1С - удобная штука, что ни говори.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4 == 1C?
Ответ #4 - 19. Декабря 2010 :: 09:12
Печать  
trdm писал(а) 18. Декабря 2010 :: 20:37:
Прикольно, но питон я в гробу видел..

Понимаю...
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic
Ответ #5 - 19. Декабря 2010 :: 10:45
Печать  
blindvic писал(а) 19. Декабря 2010 :: 09:11:
Кроме того, 1С - удобная штука, что ни говори.

Знаешь почему она удобная?
Своими инструментами она сокращает количество телодвижений девелопера.
Возьмем редактор форм:

которым ты хвалишся, что встроил его. Если честно, я его просто ненавижу..
Он работает абсолютно неадекватно и сопротивляется девелоперу так что приходется переделывать что-бы добиться его нормального поведения. Нужен хороший опыт, что-бы слабать форму средней сложности и понять как работает лайотная система Qt.
Если кто сомневается в моих словах, скачайте креатор  и попробуйте сварганить мал-мальски простую форму с каким нить лайотом.
  
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #6 - 19. Декабря 2010 :: 10:51
Печать  
А если туда еще и питон добавить, то вообще пипец будет.
Кстати у пистона есть нормальный отладчик?
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic
Ответ #7 - 19. Декабря 2010 :: 13:13
Печать  
trdm писал(а) 19. Декабря 2010 :: 10:45:
которым ты хвалишся, что встроил его.

ну, я его пока не встроил - он всего лишь вызывается для указанного отчета. встроить его - это на будущее.
пользуюсь тем что есть. все же лучше чем ничего.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #8 - 19. Декабря 2010 :: 13:15
Печать  
trdm писал(а) 19. Декабря 2010 :: 10:51:
А если туда еще и питон добавить, то вообще пипец будет.
Кстати у пистона есть нормальный отладчик?

у Qt Desginer есть плагин для питона. позволяет делать прикручивать свои виджеты на питоне. что я и сделал.

отладчик: http://docs.python.org/library/pdb.html
  
Наверх
 
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #9 - 19. Декабря 2010 :: 13:33
Печать  
не люблю редакторы форм
и без них хорошо
95% можно генерить автоматом
и конечно qtcreator-у далеко до нормальной интеграции
да и 1ц по правильному пути пошли http://v8.1c.ru/beta_ma/ma_forms.htm
у меня почти так же Улыбка только до дерева руки не дошли пока

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

ps: отладчик в питоне есть родной - простейший, есть сторонние, можно в свою программу встроить - было бы время и желание
тот же eric - пример встраивания, с исходниками
я из него выпилил редактор кода с подсветкой синтаксиса (python, sql, html - что захочешь)
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #10 - 19. Декабря 2010 :: 13:49
Печать  
villager писал(а) 19. Декабря 2010 :: 13:33:
не люблю редакторы форм
и без них хорошо
95% можно генерить автоматом
и конечно qtcreator-у далеко до нормальной интеграции
да и 1ц по правильному пути пошли http://v8.1c.ru/beta_ma/ma_forms.htm
у меня почти так же Улыбка только до дерева руки не дошли пока

это впереди - работа с базой данных еще не реализована.
это самое сложное, по крайней мере для меня
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic
Ответ #11 - 19. Декабря 2010 :: 14:20
Печать  
blindvic писал(а) 19. Декабря 2010 :: 13:13:
trdm писал(а) 19. Декабря 2010 :: 10:45:
которым ты хвалишся, что встроил его.

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


Такой поход при наличии кучи альтернатив айсом не является...
ПС.  Это я к тому, что 1С ный девелопер проводит в редакторе форм до 20% времени нужного для девелопмента.
И так трахаться каждый раз можно и клавиатуру сломать...
  
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #12 - 19. Декабря 2010 :: 14:32
Печать  
Я предлагаю автору проанализировать успешность проекта ананаса.
http://ananas.su/forum/
Вот они тоже сделали ставку на "максимум гибкости".
Тебя ждет тот же успiх.
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #13 - 19. Декабря 2010 :: 14:35
Печать  
blindvic писал(а) 19. Декабря 2010 :: 13:49:
это впереди - работа с базой данных еще не реализована.
это самое сложное, по крайней мере для меня

как раз это было самым простым. По крайней мере сделал это достаточно быстро

все по кусочкам достаточно просто... а вот увязка и согласование-тут пришлось голову поломать

Я уже готов свой макет переписывать Улыбка
если хочешь - можем замутить опенсорс-проект. Наметим план, и будем писать с ноля.
Если получится... Улыбка
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #14 - 19. Декабря 2010 :: 14:41
Печать  
villager писал(а) 19. Декабря 2010 :: 14:35:
если хочешь - можем замутить опенсорс-проект. Наметим план, и будем писать с ноля.

дык у меня алергия на питон, яву и шарп.
просто терпеть не могу, когда проект напоминает свалку технологий и сотни пакетов.  И это все без существенной необходимости.
Наверное не получится.
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #15 - 19. Декабря 2010 :: 15:52
Печать  
trdm писал(а) 19. Декабря 2010 :: 14:41:
дык у меня алергия на питон, яву и шарп.

дык я не тебе предлагаю Улыбка

сможешь в постановке участвовать, в здоровой критике
и в нездоровой тоже Улыбка:)
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #16 - 19. Декабря 2010 :: 16:46
Печать  
trdm писал(а) 19. Декабря 2010 :: 14:32:
Я предлагаю автору проанализировать успешность проекта ананаса.
http://ananas.su/forum/
Вот они тоже сделали ставку на "максимум гибкости".
Тебя ждет тот же успiх.

я прекрасно понимаю вероятность успеха - все держится на энтузиазме и доступном времени.
я не делаю данную программу, чтобы было.
я хочу сделать инструмент, которым буду пользоваться.
знаю, что есть десятки таких заглохших проектов. честно говоря и этот я забросил более года. просто вернулся к нему последние пару месяцев.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #17 - 19. Декабря 2010 :: 16:51
Печать  
villager писал(а) 19. Декабря 2010 :: 14:35:
blindvic писал(а) 19. Декабря 2010 :: 13:49:
это впереди - работа с базой данных еще не реализована.
это самое сложное, по крайней мере для меня

как раз это было самым простым. По крайней мере сделал это достаточно быстро

все по кусочкам достаточно просто... а вот увязка и согласование-тут пришлось голову поломать

Я уже готов свой макет переписывать Улыбка
если хочешь - можем замутить опенсорс-проект. Наметим план, и будем писать с ноля.
Если получится... Улыбка

я не против. просто, мне показалось, у нас разные видения. хотя, наверное, в этом есть суть успеха - умело управлять тем, что есть, а не заморачиаться идеальностями.

Чего я хочу:
1. Дерево метаданных. У тебя, кажется такого нет. Да ты и не хочешь.
2. Более визуализированный подход. У тебя там отдельные вкладки для управления при загрузке, сохранении, закрытии. А мне нравится подход 1С - предопределенные процедуры.

Пожалуй, это все, что я впомнил
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #18 - 19. Декабря 2010 :: 16:59
Печать  
>Вся «программа» (описание экранов, отчеты, модули) хранится в БД.

Меня смущает терминология в твоем проекте. Напрмиер "экраны". Почему не "формы"?
Мне кажется хранить конфигурацию ("описание экранов, отчеты, модули") удобнее хранить в файловой системе - легко что-нибудь ручками подправить, скопировать.
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #19 - 19. Декабря 2010 :: 17:17
Печать  
villager писал(а) 19. Декабря 2010 :: 15:52:
сможешь в постановке участвовать, в здоровой критике
и в нездоровой тоже Улыбка:)

Эт я запросто...

blindvic писал(а) 19. Декабря 2010 :: 16:46:
я не делаю данную программу, чтобы было.
я хочу сделать инструмент, которым буду пользоваться.


Улыбка самая лучшая мотивация в мире Улыбка
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #20 - 19. Декабря 2010 :: 17:54
Печать  
blindvic писал(а) 19. Декабря 2010 :: 16:59:
Меня смущает терминология в твоем проекте. Напрмиер "экраны". Почему не "формы"?
Мне кажется хранить конфигурацию ("описание экранов, отчеты, модули") удобнее хранить в файловой системе - легко что-нибудь ручками подправить, скопировать.


мне терминология тоже не нравится Улыбка писал первое пришедшее на ум, не до того было
может "форма" и лучше звучит, можно поменять

если хранить в файловой системе - будут проблемы с распространением. А так у меня вся "конфигурация" в одном файле SQLITE - все в одном. Легко будет делать обновление у клиента.
Что касается руками подправить... - так и в БД тоже можно подправить. А для исправления на лету я еще собираюсь сделать вызов определенных модулей, что бы не трогая "конфигурацию" можно было донастраивать мелочи у клиента.

Еще + : описание храню в таблицах и могу (и использую) эту инфу для контроля целостности БД. Т.е. если какое-то поле таблицы БД привязано к справочнику, то при попытке удаления из этого справочника я проверяю, не используется ли эта строка в где-нибудь. Чтото типа FOREIGN KEY на уровне приложения. А если конфигурация=набор_файлов , то такую фишку не реализуешь

Про Цитата:
Дерево метаданных

что имеется в виду? У меня описываются "формы", на их основании создаются таблицы в БД, формы сами при загрузке привязываются в меню. Как тут дерево использовать? Хватает просто системы меню пока

Цитата:
Более визуализированный подход. У тебя там отдельные вкладки для управления при загрузке, сохранении, закрытии. А мне нравится подход 1С - предопределенные процедуры.

а чем предопределенная процедура лучше, чем отличается от вкладки для ее написания? и в чем эта визуализация состоит в этом случае?
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #21 - 19. Декабря 2010 :: 18:59
Печать  
villager писал(а) 19. Декабря 2010 :: 17:54:
Про Цитата:
Дерево метаданных

что имеется в виду? У меня описываются "формы", на их основании создаются таблицы в БД, формы сами при загрузке привязываются в меню. Как тут дерево использовать? Хватает просто системы меню пока

Дерево метаданных - визуальное представление всей конфигурации - все как на ладони.
  

untitled_002.PNG ( 6 KB | Загрузки )
untitled_002.PNG
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #22 - 19. Декабря 2010 :: 19:02
Печать  
villager писал(а) 19. Декабря 2010 :: 17:54:
Цитата:
Более визуализированный подход. У тебя там отдельные вкладки для управления при загрузке, сохранении, закрытии. А мне нравится подход 1С - предопределенные процедуры.

а чем предопределенная процедура лучше, чем отличается от вкладки для ее написания? и в чем эта визуализация состоит в этом случае?
У тебя код, выполняемый при наступлении определенный событий, разбросан по вкладкам.
В 1С этот код является частью модуля - функции с предопределенными именами.
http://www.mista.ru/tutor_1c/predopred_proc.htm
« Последняя редакция: 20. Декабря 2010 :: 12:13 - blindvic »  

untitled_001.PNG ( 33 KB | Загрузки )
untitled_001.PNG
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #23 - 20. Декабря 2010 :: 11:20
Печать  
villager писал(а) 19. Декабря 2010 :: 17:54:
Цитата:
Более визуализированный подход. У тебя там отдельные вкладки для управления при загрузке, сохранении, закрытии. А мне нравится подход 1С - предопределенные процедуры.

а чем предопределенная процедура лучше, чем отличается от вкладки для ее написания? и в чем эта визуализация состоит в этом случае?


Дело не в визуализации а в скорости доступа для редактирования.
По закладками лазить, когда их много - долго, это ван, быстрее воспользоваться скролингом или поиском в тексте.
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #24 - 20. Декабря 2010 :: 17:28
Печать  
trdm писал(а) 20. Декабря 2010 :: 11:20:
Дело не в визуализации а в скорости доступа для редактирования.
По закладками лазить, когда их много - долго, это ван, быстрее воспользоваться скролингом или поиском в тексте.

я не против.
К тому, что код по полкам разложен привык еще в Foxpro - сложно отвыкать
С другой стороны - к событиям привязываю конкретный код, поэтому собирать форму проще из кусков.
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #25 - 20. Декабря 2010 :: 18:03
Печать  
villager писал(а) 20. Декабря 2010 :: 17:28:
trdm писал(а) 20. Декабря 2010 :: 11:20:
Дело не в визуализации а в скорости доступа для редактирования.
По закладками лазить, когда их много - долго, это ван, быстрее воспользоваться скролингом или поиском в тексте.

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

Ну дык еще приколоти гвоздями сюда концепцию повторного использования кода.
Или ты копипастить больше любишь?
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #26 - 20. Декабря 2010 :: 18:55
Печать  
а у меня код не повторяется в принципе
кроме уникального
весь стандарт (создать, исправить, скопировать,удалить) зашит в платформу
уникальные куски вешаются на на события, команды меню,могут заменять стандартную реакцию (например при сохранении в БД, удалении...)
в демо складского учета это можно посмотреть

а повторно используемый код в модулях хранить можно: грузи и используй

кстати,  еще довод, зачем хранить конфигурацию в БД: защита от несанкционированного доступа
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

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

Очень отрадно было увидеть эту тему.

Я интересуюсь Питоном. Зарабатываю 1с.
Давно зреет мысль писать на питоне свои учетные модули(программы).
Останавливало одно: помню что разработчиком Питона было декларировано, что команды в Питоне будут только аглицким языком. (Хотя на Питоне очень несложно написать собственный язык программирования).

Присоединяюсь к инициатору. Желаю участвовать в создании собственной программной площадке на полноценном и современном языке программирования.

PS/ Может кто-нибудь помнит рассылку Михаила Баранова (bami) "МУРОМЕЦ"? Сейчас ее нет в инете. У меня остались 2 варианта платформы. Было-бы хорошо-бы использовать объектную модель и модель генерации модулей от Муромца, русскоязычность платформы от 1С и огромное количество готовых модулей Питона. Инструмент был-бы суперным!!!

Рассылка "Кубики для взрослых"
http://subscribe.ru/catalog/comp.soft.others.murometz1

Присоединил архив рассылок "Кубики для взрослых" и "Создаем свою информационную систему" и пример метамодели системы.
« Последняя редакция: 14. Февраля 2011 :: 07:44 - VSozansky »  

_______________002.rar ( 389 KB | Загрузки )
Наверх
IP записан
 
Yhrik
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 28. Января 2009
Re: wic: Python + PyQt4
Ответ #28 - 14. Февраля 2011 :: 10:17
Печать  
В целом впечатления хорошие.
Хотя Питон не знаю.
А на Шарп с Явой, тоже, наверно, аллергия.
Ролик показывает, что инструментарий, скорей всего, достаточен для like1C.
Важно проектирование системы, концепция, фундамент.
А как формы рисовать разберёмся, проектирование или подбор инструментария и удобство работы программиста, я думаю, не столь важно.
Идея важнее, фундамент.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



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

3-я версия поддерживает идентификаторы юникод
  

Image_1.png ( 180 KB | Загрузки )
Image_1.png
Наверх
 
IP записан
 
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 записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #45 - 17. Февраля 2011 :: 14:41
Печать  
VSozansky писал(а) 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
Ответ #46 - 17. Февраля 2011 :: 15:32
Печать  
Я согласен что не всегда хорош HTML, он полезен например для договоров. Для точного вывода конечно лучше будет вывод в табличный формат.
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #47 - 17. Февраля 2011 :: 18:43
Печать  
VSozansky писал(а) 17. Февраля 2011 :: 14:22:
Виталий подскажи книжку полезную по QT. Чтобы поскорей освоиться с виджетами.

На английском? для Си++?


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

Это дело важно, конечно же. Только сначала надо сделать что-то что можно распространять: объектную модель, работу с БД.


Цитата:
Зря отказываешся. В архиве рассылки имеется и разжевано много вещей необходимых для реализации коммерческой системы.
Да я не отказываюсь. Почитаю как-нибудь. Просто этузиасты всегда будут делать как им хочется. А хочется - как умеется.


Цитата:
Жаль что для демонстрации. Надобы иметь вывод на принтер. Пусть плохой, но вывестись должно.

Вывод с хтмл и сейчас можно как хочешь использовать. Просто в будущем лучше было бы упростить работу с хтмл - шаблоны, секции и т.п.
Кстати, где-то читал что на хтмл странице можно вставить разрыв страницы. http://stackoverflow.com/questions/1539876/controlling-css-page-breaks-when-prin...

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

Первым делом - создание/реструктуризация БД в соответствии с конфой.
Не делать многосторочные части у справочников. Сделать виджет СписокСправочника, который будет показывать подчиненный справочник.
Возможность работа без базы данных - только отчеты и глобальный модуль.
Сделать класс Справочник (Документ позже). Ему скармливаешь id записи - он загружает данные. Иметь возможность обновить данные. Если у справочника имеется поле типа Справочник - он загружается только при попытке обращения к этому атрибуту.
Еще вопрос - как работать с полями таблиц типа Decimal. Есть идея хранить как целы числа, а количество цифр после запятой фиксированно для всех записей и определяется метаданными. В Sqlite поле типа int макс 8 байт (9223372036854775807), т.е. 18 значащих цифр.
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #48 - 17. Февраля 2011 :: 18:50
Печать  
Нет, на русском. И лучше Python.and.Qt
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #49 - 17. Февраля 2011 :: 19:05
Печать  
на английском http://knigi-programmista.eu5.org/rapid-gui-programming-with-python-and-qt/
документация на русском (частично) http://doc.crossplatform.ru/
питон и кьют вместе на русском нет. есть питон на русском и кьют с си++ на русском. дашь мыло - вышлю
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #50 - 17. Февраля 2011 :: 19:35
Печать  
За ссылочку
http://doc.crossplatform.ru
спасибо!

Имеется

Qt4. Профессиональное программирование на C++, 2008г +DVD
Qt4.5. Профессиональное программирование на C++, 2010г +DVD
Бланшет,Саммерфилд - QT4 Программирование GUI на С++.2ed.2008

а на аглицком
GUI_Programming_with_Python_-_QT_Edition [miex.org].chm
Rapid.GUI.Programming.with.Python.and.Qt.Oct.2007.pdf


о... погуглил и нашел столько книжек свежих по питону...
скачал
Саммерфилд М. Программирование на Python 3. Подробное руководство+CD
Лутц - Изучаем Python.3ed.2009
и еще затяну
Программирование на Python. 2-е изд.
Python в системном администрировании UNIX и Linux
Статья Функциональное программирование на языке Python
Язык программирования Python
Язык программирования Python. Курс лекций
Учимся программировать вместе с Питоном (python)
Программируем коллективный разум
Django. Разработка веб-приложений на Python
Язык программирования Python.Р. А. Сузи

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



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #51 - 17. Февраля 2011 :: 19:38
Печать  
http://diveintopython3.org/
http://diveintopython.org/
очень неплохие книги

Этих должно хватить:
Цитата:
Qt4.5. Профессиональное программирование на C++
http://diveintopython3.org/
Rapid.GUI.Programming.with.Python.and.Qt.Oct.2007
Саммерфилд М. Программирование на Python 3. Подробное руководство
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #52 - 17. Февраля 2011 :: 20:47
Печать  
Книги по Qt лучше искать тут
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #53 - 18. Февраля 2011 :: 07:04
Печать  
trdm писал(а) 17. Февраля 2011 :: 20:47:
Книги по Qt лучше искать тут

И вопросы задавать там тоже хорошо
  
Наверх
 
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #54 - 18. Февраля 2011 :: 18:57
Печать  
blindvic писал(а) 14. Февраля 2011 :: 19:32:
Сейчас застрял на прослойке к базе данных

я с БД делал примерно так:

создаю объект (оБД)
открываю БД
читаю названия таблиц
читаю поля  таблиц (название, типы размеры)
читаю имя ключевого поля
объектов для таблиц не создаю не создаю, храню все в словарях (оБД)
таблицы в текстах программ не описываются

если надо доступ к таблице
создаю объект оТб
выглядит так:  тбл=оБД.имя_таблицы
(использую __getattr__)

в нем есть:
возможности задать сортировку и фильтрацию
методы навигации, импорта/экспорта
удаления/чтения/сохранения записи
извлечения полей/записи по ключу
доступа к полям (выглядит: оТб.р.имя_поля)

запись - словарь

опять-таки - объектов для каждого поля не создаю

и еще создаю и храню связи:
поле п1 из таблицы т1 связано с полем пп1 из таблицы т2
этой инфой пользуюсь при удалении/сохранения записи
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

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

А какой движёк БД планируете использовать?
Будет ли прослойка типа SQLObject?
Будет ли доступен многопользовательский режим?
Будет ли доступны функции определяемые пользователями?

Очень красиво (для клиента) использовать БД от какого-то коммерческого бренда типа IBM (IBM DB2 9.1 FixPack 2 Express-C).


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



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #56 - 20. Февраля 2011 :: 06:34
Печать  
У villager'а уже есть работающая система.

Насчет меня^
Цитата:
А какой движёк БД планируете использовать?

Postgres, MySql, Sqlite
Цитата:
Будет ли прослойка типа SQLObject?

наверное
Еще не знаю, идти ли по пути QSql или напрямую работать с БД.
Цитата:
Будет ли доступен многопользовательский режим?

планируется
Цитата:
Будет ли доступны функции определяемые пользователями?

конечно. сама платформа написана на питоне. а значит программист (пользователь) может с легкостью  модифицировать как конфу, так и саму платформу.
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #57 - 20. Февраля 2011 :: 06:45
Печать  
blindvic писал(а) 20. Февраля 2011 :: 06:34:
У villager'а уже есть работающая система.

Цитата:
Будет ли доступны функции определяемые пользователями?

конечно. сама платформа написана на питоне. а значит программист (пользователь) может с легкостью  модифицировать
как конфу, так и саму платформу.


Я имел ввиду выберем ди мы движек SQL базы такой, чтобы в нем были полноценное создание и выполнение функций определяемых пользователями. Или планируется напрямую работать с таблицами и разбирать их в пользовательском приложении.


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



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #58 - 20. Февраля 2011 :: 09:20
Печать  
Не уверен, что полностью понял. Постараюсь абстрагировать работу с БД и объектами БД (справочники, и т.п.), но с возможностью легко дополнять/изменять функционал - в духе Qt.
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #59 - 20. Февраля 2011 :: 10:54
Печать  
Вот для SQL Server 2008 R2
http://msdn.microsoft.com/ru-ru/library/ms186755.aspx


CREATE FUNCTION (Transact-SQL)
Создает определяемую пользователем функцию в SQL Server 2008 R2. Определяемая пользователем функция, представляющая собой подпрограмму Transact-SQL или среды CLR, которая принимает параметры, выполняет действия, такие как сложные вычисления, а затем возвращает результат этих действий в виде значения. Возвращаемое значение может быть скалярным значением или таблицей. При помощи этой инструкции можно создать подпрограмму, которую можно повторно использовать следующими способами.
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #60 - 20. Февраля 2011 :: 17:23
Печать  
Думаю да. Правда мне еще это сделать нужно.  Смех
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #61 - 21. Февраля 2011 :: 05:54
Печать  
VSozansky писал(а) 20. Февраля 2011 :: 10:54:
Вот для SQL Server 2008 R2
http://msdn.microsoft.com/ru-ru/library/ms186755.aspx


CREATE FUNCTION (Transact-SQL)
Создает определяемую пользователем функцию в SQL Server 2008 R2. Определяемая пользователем функция, представляющая собой подпрограмму Transact-SQL или среды CLR, которая принимает параметры, выполняет действия, такие как сложные вычисления, а затем возвращает результат этих действий в виде значения. Возвращаемое значение может быть скалярным значением или таблицей. При помощи этой инструкции можно создать подпрограмму, которую можно повторно использовать следующими способами.

При этом надо серьезно задуматься над системой доступа. Ведь что может помешать создать функцию, типа DROP TABLE $Документ.ПриходнаяНакладная ? Только ограничение пользователя в правах на уровне SQL-сервера, т.е. тонкий тюнинг на предмет (читаем из таблицы А, пишем в таблицу Б, можем удалять из таблицы В, можем управлять доступом для таблицы Г и т.д.). А это приведет к необходимости поддержки доступа к конкретной БД (команды доступа в pgSQL могут отличаться от IBM DB2, не говоря уже о SQLite). Поэтому обычно пользователя отделяют от самой СУБД при помощи приложения. Например создавая язык более высокого уровня (Регистр.СводныйОстаток по определению не может удалить таблицу $Документ.ПриходнаяНакладная). При этом ограничениями пользователя занимается приложение, а не СУБД.
  
Наверх
ICQ  
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #62 - 21. Февраля 2011 :: 06:55
Печать  
Salimbek писал(а) 21. Февраля 2011 :: 05:54:
При этом надо серьезно задуматься над системой доступа. .......
...............
При этом ограничениями пользователя занимается приложение, а не СУБД.


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

Использование пользовательских функций полезно и даже необходимо для формирования строкового представления объекта.

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


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #63 - 21. Февраля 2011 :: 07:00
Печать  
Программа будет управлять документами. Они будут записываться в базу и предъявляться по требованию.

Вот определение документа:

Д О К У М Е Н Т  - это информационный объект, который может состоять из одной или нескольких частей. Каждая из частей может быть либо списком атрибутов, либо таблицей, либо иерархической структурой. Табличная и иерархическая часть,  состоит из строк, каждая из которых тоже является списком атрибутов. Набор атрибутов в табличной (или иерархической) части документа одинаков для каждой из строк. Часть документа может быть зависимой от одной, и только одной, части того же документа.

Вот определение атрибута:

А Т Р И Б У Т – это именованная единица хранения информации, способная принимать значения строго определенного типа. Атрибут может быть обязательным или необязательным.  Для атрибута могут быть определены значение по умолчанию и правило проверки правильности  заданного значения. Группа из одного или нескольких атрибутов может составлять уникальное сочетание, как в рамках части документа, так и глобально для всей информационной системы. Следует различать атрибуты, принимающие скалярные значения и атрибуты, являющиеся указателями (ссылками) на другие компоненты информационной системы.
  
Наверх
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #64 - 21. Февраля 2011 :: 19:59
Печать  
Требования к информационной системе (ТС)

ТС1 -  Информационная система это набор исполняемых программ.
Т.е. совсем не обязательно запихивать всю функциональность в один исполнимый модуль.

ТС2 - По-возможности, готовая систем не должна ничего знать о метаданных. Не должны использоваться метаданные.

ТС3 - информационная система должна снабжаться необходимым набором утилит, которые обеспечивают ее развертывание без привлечения средств СУБД и программных платформ.
Т.е. надо позаботиться о том, чтобы бедный администратор не изучал, например SQL Servеr чтобы систему развернуть, а запустил пару программ и хорошо.

ТС4 - информационная система, при необходимости, может поставляться  в исходных текстах.

ТС5 - Общие функции системы должны выделяться в отдельные компоненты с целью минимизировать дублирование кода.
Т.е. подход такой, если что-то может и должно использоваться более чем в одном документе (модуле), то есть смысл упаковывать это в отдельный компонент.


ТС1-1  В базе данных идентификация строки данных должна однозначно осуществляться по паре  значений (Таблица, Значение поля- идентификатора).  
Таким образом, мы сразу переходим к унифицированной схеме базы данных. Отказываемся от композитных ключей и заодно от необходимости думать о том, что таблицы могут сильно отличаться друг от друга

ТС1-2  Реализация сильных и слабых связей в базе данных должна существенно отличаться.

ТС1-3  Таблица может являться дочерней для одной и только для одной таблицы.

ТС1-4  Для сильных связей должен обязательно использоваться механизм встроенного контроля целостности ( внешние ключи)

ТС1-5  Все идентификаторы в базе данных реализуются при помощи механизма глобально уникальных идентификаторов (GUID)

ТС1-6  Все документы  регистрируются в единой таблице

ТС1-7 Документ должен имеет видимое (строковое) представление, которое может быть использовано для отображения в списке.

ТС1-8 Каждая строка документа должна иметь видимое (строковое) представление, которое может быть использовано для отображения в списке, при установке ссылки на строку и т.п.

TC1-9 Алгоритм определения имя поля для хранения идентификатора  должен быть фиксирован для всей базы данных.
  
Наверх
IP записан
 
eurobax
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 62
Зарегистрирован: 13. Января 2010
Re: wic: Python + PyQt4
Ответ #65 - 21. Февраля 2011 :: 20:48
Печать  
VSozansky, вы очень красиво расписываете функциональность системы. Я же хочу напомнить, что техническая реализация - далеко даже не пол-дела. Расписывая вопрос ЧТО, не забывайте про вопрос КАК, а именно - как сделать систему коммерчески успешной? Может, организуем для этого отдельную ветку?
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #66 - 21. Февраля 2011 :: 21:18
Печать  
eurobax писал(а) 21. Февраля 2011 :: 20:48:
VSozansky, вы очень красиво расписываете функциональность системы. Я же хочу напомнить, что техническая реализация - далеко даже не пол-дела. Расписывая вопрос ЧТО, не забывайте про вопрос КАК, а именно - как сделать систему коммерчески успешной? Может, организуем для этого отдельную ветку?


Прошу извинить парни, но вышеизложенные принципы выстраданы не мною. Они были высказаны М.Барановым в рассылках "Кубики для взрослых" и Создадим свою экспертную систему".
Она действовала с 2003г. Я не успел общаться в Михаилом. Сейчас он занят в коммерческих проектах. Его система доведена до коммерческого использования.

В кратце: Он предлагал создать некое описание системы - метаданные. И генератор, который по метаданным сгенерирует код модулей для компиляции. Формы имеют особенности: настраивание дизайна пользователем.

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

Поэтому необессудте напишу свои наблюдения по моему полезные для проекта.
  
Наверх
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #67 - 21. Февраля 2011 :: 21:55
Печать  
Имеет смысл однажды определить тип данных, а затем пользоваться им где желаем.


Типы данных используемые в приложении.

Seconds - Число секунд
Minutes - Номер минуты
Hours - Номер часа
Days - Номер дня в месяце
Months - Номер месяца
Date - Дата
Time - Время
DateTime - Дата и время

Numeric - Число
Integer - Целое число

String - Строка ограниченной длины
Boolean - Да / Нет


ID - Идентификатор

TypeStyle - Вариант трактовки типа поля
AggregationType - Вариант агрегации по полю
NumerationRule - Правило нумерации
HTML - Документ в формате HTML
Reference - Ссылка
URL – Адрес ресурса в интернет
File - Файл
MenuActionType - Вариант действия при выборе пункта меню
ColumnSortType - Вариант сортиовки данных колонки
StructType - Тип раздела
TargetType - Вариант уровня приложения, куда может генерироваться код
Image - Изображение (картинка)
PartAddBehaivor - Поведение при добавлении строки раздела
FolderType - Тип папки
ReferenceType - ReferenceType
Memo - Мнегострочное поле для ввода информации
Percent - "0-100 %"
YesNo - "Да / Нет (0 или 1)"
GeneratorStyle - GeneratorStyle
DayInWeek - День недели
PartType - PartType
ConditionType - Варианты условий
E-MAIL - Почтовый адрес
RTF - RTF текст
Password - Пароль
TriState - Да / Нет / Не определено
InfoStoreType - Тип каталога

WFFuncParam - Вариант расшифровки параметра функции
WFShortcutType - Варианты ярлыков, которые может размещать процесс
VHAlignment - Выравнивание
WFProcessState - Состояния процесса
OnJournalRowClick - действие при открытии строки журнала
WFStepClass - Тип шага процесса
VRTaskType - Тип задачи
WFFuncState - Состояние функции в бизнес процессе


Возможно вывел здесь лишние данные.Но решил не удалять ничего на первый взгляд ненужное.
  
Наверх
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

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

Нашел свежую книжку по ПИТОНУ. (2010г язык русский.)
Python.podrobnyj.spravochnik.4.e.izdanie.David.M.Beazley.2010.pdf
http://ifolder.ru/22131826

И еще вопросики:

Подскажите как можно реализовать дублирующие названия для идентификаторов? Кто-то уже размышлял по этому поводу?

Подскажите как лучше выводить метамодель (конфигурацию) для ее просмотра и редактирования? Удобно иметь метамодель в виде отдельного XML файла. Пример метамодели в вложении.
  

___________002.rar ( 223 KB | Загрузки )
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #69 - 27. Февраля 2011 :: 12:05
Печать  
VSozansky писал(а) 27. Февраля 2011 :: 11:00:
Подскажите как можно реализовать дублирующие названия для идентификаторов? Кто-то уже размышлял по этому поводу?

Допустим, есть метод printMessage класса MessagesWindow.
Его вызываешь myMessagesWindow.printMessage('this is my message').
Для дублирования пишешь myMessagesWindow.сообщить = myMessagesWindow.printMessage
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #70 - 27. Февраля 2011 :: 12:42
Печать  
blindvic писал(а) 27. Февраля 2011 :: 12:05:
VSozansky писал(а) 27. Февраля 2011 :: 11:00:
Подскажите как можно реализовать дублирующие названия для идентификаторов? Кто-то уже размышлял по этому поводу?

Допустим, есть метод printMessage класса MessagesWindow.
Его вызываешь myMessagesWindow.printMessage('this is my message').
Для дублирования пишешь myMessagesWindow.сообщить = myMessagesWindow.printMessage

А где писать? В каком месте? Как сделать это в полуавтомате(максимально автоматически-типа модуля перевода или журнала соответствий идентификаторов)?
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #71 - 27. Февраля 2011 :: 13:47
Печать  
можешь в самих классах писать. либо отдельный модуль сделать (например, см. начало модуля w.py).
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #72 - 27. Февраля 2011 :: 14:31
Печать  
blindvic писал(а) 27. Февраля 2011 :: 13:47:
можешь в самих классах писать. либо отдельный модуль сделать (например, см. начало модуля w.py).


!!!!! РАБОТАЕТ !!!!!

в w.py написал после
printMessage = mainWindow.messagesWindow.printMessage
w.Сообщение

А в модуле
   w.Сообщение ('w.Сообщение: Модуль загружен.')

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



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #73 - 27. Февраля 2011 :: 15:28
Печать  
VSozansky писал(а) 27. Февраля 2011 :: 14:31:
А в модуле
  w.Сообщение ('w.Сообщение: Модуль загружен.')

в начале модуля можно написать
Код
Выбрать все
from w import *
или
from w import Сообщение 


и писать просто
Сообщение ('w.Сообщение: Модуль загружен.')
  
Наверх
 
IP записан
 
VSozansky
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Местоположение: Одесса
Зарегистрирован: 07. Августа 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #74 - 28. Февраля 2011 :: 17:32
Печать  
VSozansky писал(а) 27. Февраля 2011 :: 11:00:
Подскажите как лучше выводить метамодель (конфигурацию) для ее просмотра и редактирования? Удобно иметь метамодель в виде отдельного XML файла. Пример метамодели в вложении.



Вопрос остается актуальным! Посмотрите файл во вложении и предложите как будем выводить в дереве метаданные и как редактировать.
Интересует:
1. какой библиотекой лучше пользоваться.
2. как быстро отображать в дереве
3. как выводить только нужные элементы из файла метаданных

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



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #75 - 28. Февраля 2011 :: 17:59
Печать  
VSozansky писал(а) 28. Февраля 2011 :: 17:32:
Вопрос остается актуальным! Посмотрите файл во вложении и предложите как будем выводить в дереве метаданные и как редактировать.
Интересует:
1. какой библиотекой лучше пользоваться.
2. как быстро отображать в дереве
3. как выводить только нужные элементы из файла метаданных


Извини, нет времени этим заниматься.
Комментарии:
Не люблю XML. Не работал с ним особенно.
Мне нравится хранить дерево конфигурации в фйловой системе. Со временем может упаковывать это дерево в ЗИП файл. Но это когда уже все будет более-менее работать.

Надо сделать загрузку конфигурации при загрузку системы (сейчас она загружается при запуске конфигуратора). Иметь глобальную ссылку на корень дерева конфигурации (такую же как хранится в классе CfgTreeModel в файле cfg_tree.py).

Имея глобальную ссылку на дерево конфигурации, можно в отчете обходить его и реализовать меню Операции как в 1С.

Копаться в чужом коде - сложная штука. Удачи!
  
Наверх
 
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: wic: Python + PyQt4
Ответ #76 - 20. Апреля 2011 :: 08:40
Печать  
Начал изучать ваши исходники, в питоне новичёк..
Подскажите нормальный редактор?
  
Наверх
 
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #77 - 20. Апреля 2011 :: 17:00
Печать  
eric4
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #78 - 20. Апреля 2011 :: 18:02
Печать  
C радостью отвечу на вопросы.
Начинаю готовиться к продолжению работы - смотрю в сторону SQLAlchemy.

Учтите, что исходники на Питоне 3. Поэтому лучше Eric5.
  
Наверх
 
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: wic: Python + PyQt4
Ответ #79 - 22. Апреля 2011 :: 06:29
Печать  
покритикуйте мысль..
Создаем
класс ОБЪЕКТ (все остальные объекты базы наследуются от этого):
  1. Перечисляем обязательные для наследников реквизиты (Имена реквизитов, которые хранится в базе, начинаем с префикса "BD"):
  BD_ID строка
  и т.д ...
  2. Служебные атрибуты
   Бд - Объект для работы с базой
  ИмяТаблицы - таблица бд для объекта
  СписокОбъектов - для хранения списка объектов (при организации выборки - ВыбратьЭлементы())
  и т.д
  3. Описывает стандартные методы
  ПолучитьТаблицуБД() - по определенным правилам генерируем имя
  Новый() - получаем новый код/номер
  Записать().. записываем или обновляем
  ВыбратьЭлементы() - Запросом получаем и сохраняем в список "СписокОбъектов "
  НайтиЭлемент() - считываем из базы данных, и присваиваем атрибутам значения

Вопрос  Очень довольный Как в цикле перебрать атрибуты класса?..
 
 
 
  
Наверх
 
IP записан
 
Денис
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 8
Зарегистрирован: 03. Ноября 2010
Re: wic: Python + PyQt4
Ответ #80 - 22. Апреля 2011 :: 10:50
Печать  
Ну, метаданные можно хранить и во внешней структуре. А можно взять для реализации какой-нибудь язык с поддержкой метапрограммирования. Например Ocaml. Там это просто делается штатными средствами языка.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #81 - 22. Апреля 2011 :: 20:24
Печать  
Boris_1c писал(а) 22. Апреля 2011 :: 06:29:
Вопрос  Очень довольный Как в цикле перебрать атрибуты класса?..

Код
Выбрать все
class MyObject():
    def __init__(self):
        self.bd_id = '###########'
        self.bd_name = '_____________'
        self.bd_another = []

my_obj = MyObject()
for name in dir(my_obj):
    if name.startswith('bd_'):
        print(name) 


http://docs.python.org/library/functions.html#dir
  
Наверх
 
IP записан
 
vasjakur
YaBB Newbies
*
Отсутствует



Сообщений: 7
Зарегистрирован: 06. Ноября 2006
Re: wic: Python + PyQt4
Ответ #82 - 11. Мая 2011 :: 15:21
Печать  
Boris_1c писал(а) 20. Апреля 2011 :: 08:40:
Начал изучать ваши исходники, в питоне новичёк..
Подскажите нормальный редактор?



Под вин http://code.google.com/p/pyscripter/
  
Наверх
 
IP записан
 
vasjakur
YaBB Newbies
*
Отсутствует



Сообщений: 7
Зарегистрирован: 06. Ноября 2006
Re: wic: Python + PyQt4
Ответ #83 - 11. Мая 2011 :: 15:24
Печать  
blindvic писал(а) 20. Апреля 2011 :: 18:02:
C радостью отвечу на вопросы.
Начинаю готовиться к продолжению работы - смотрю в сторону SQLAlchemy.

Учтите, что исходники на Питоне 3. Поэтому лучше Eric5.


Ковырял SQLAlchemy, интересная вещь - но увы, не вносит изменения в существующие таблицы БД, только создает новые. Ещё отдельно надо обеспечивать обработку циркулярных ссылок.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #84 - 04. Декабря 2011 :: 18:49
Печать  
Вернулся к разработке...

Значительно изменил архитектуру проекта. Убрал динамические пользовательские модули. Теперь система больше похоже на Django  по своей идеологии.

Сделал ORM - гибрид DAL из Web2py и Django ORM. Форма "элемента справочника" открывается и сохраняется.
Здесь репозиторий.

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

Теперь хочу сделать форму списка справочника (в терминологии 1С). Пожалуйста, посоветуйте как это сделать лучше. Знаю, что народ уже делал что-то подобное.

А если кто-нибудь еще и подскажет как это сделать в помощью Qt - вообще будет замечательно. Я уже пытался на этй тему проконсультироваться - пока еще еще не сделал выводов.

Итак, если некий view (QTableView в моем случае), в котором я хочу отображать записи одной из таблиц. На будущее хочу в ней отбражать результаты любого запроса (фильтр WHERE + сортировка ORDER BY, etc.)

Самое простое - сделать запрос к базе даных и весь результат сразу на форму. Я же хочу запрашивать у БД только сколько нужно для отображения.  А по мере прокрутки - делать дополнительные запросы. Вопрос, собственно, состоит в том, как эффективно организовать подгрузку.

Допустим, если речь идет обо всем справочнике, то COUNT(*) довольно быстрая (для некоторых БД) операция - поэтому можно корректно установить размер и положение ползунка scrollbar. Если же количество записей в результате неизвестно - как сделать ползунок? Кстати, в 1С 7.7 (не работал с 8) ползунок всегда маленький, т.е. по егу размеру нельзя судить насколько большая часть записей сейчас отображена, и солько записей есть сверху и снизу.

Далее, как подгружать результаты - по паре строк или всегда как-то минимальный набор (например, 255 строк)?

LIMIT для прокрутки всех записей таблицы не буду - хочу ориентироваться по PRIMARY KEY. Т.е., если пользователь прокрутил вниз на 10 строк, сделаю SELECT * FROM catalog WHERE row_id > last_row_id LIMIT 10, где row_id и last_row_id - первичный ключ справочника и ключ последней отображаемой записи на форме. По идее, должно быть очень быстро.

Какие еще нюансы надо учитывать в этом деле?
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #85 - 04. Декабря 2011 :: 20:15
Печать  
blindvic писал(а) 04. Декабря 2011 :: 18:49:
Теперь хочу сделать форму списка справочника (в терминологии 1С). Пожалуйста, посоветуйте как это сделать лучше. Знаю, что народ уже делал что-то подобное.

А если кто-нибудь еще и подскажет как это сделать в помощью Qt - вообще будет замечательно. Я уже пытался на этй тему проконсультироваться - пока еще еще не сделал выводов.

Итак, если некий view (QTableView в моем случае), в котором я хочу отображать записи одной из таблиц. На будущее хочу в ней отбражать результаты любого запроса (фильтр WHERE + сортировка ORDER BY, etc.)


посмотри мой Receptor там есть модуль uodbmanager. Как раз реализует форму списка справочника. реализована пара тройка моделей: Иерархическая с элементами и без, табличная с управляемой иерархией: можно показать только элементы подчиненные группе или все.
Буду дорабатывать конечно, но начало вроде положено.
Элементы и группы справочников добавляются/помечаются на удаление. Надо бы еще удаление помеченных объектов сделать. Но не успел.
  

uoRecepror04_Refs.PNG ( 48 KB | Загрузки )
uoRecepror04_Refs.PNG
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #86 - 04. Декабря 2011 :: 20:20
Печать  
blindvic писал(а) 04. Декабря 2011 :: 18:49:
Какие еще нюансы надо учитывать в этом деле?

преждевременная оптимизация - зло..
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #87 - 05. Декабря 2011 :: 16:51
Печать  
раз QTableView - значит делай свою модель
и через нее добывай данные

раз модель  - желательно знать количество строк
через count(*)  - можно...

у себя я по условию при инициализации модели извлекаю только первичный ключ (QSqlQuery), остальное построчно по мере надобности
в модели - метод data
что бы не извлекать несколько раз одно и тоже - извлеченные строки складываю в словарь(т.е. если первичного ключа нет в словаре - лезу в БД)

всякие LIMIT не использую - не везде есть, а скорости и так хватает

будут вопросы - отвечу

Улыбка
НО! с точки зрения траты времени - лучше изучить django, написать что-нибудь... и найти работу на 2-3К
т.к. не видно никакой другой области, где бы питонеры требовались.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #88 - 05. Декабря 2011 :: 17:11
Печать  
trdm писал(а) 04. Декабря 2011 :: 20:15:
посмотри мой Receptor там есть модуль uodbmanager. Как раз реализует форму списка справочника. реализована пара тройка моделей: Иерархическая с элементами и без, табличная с управляемой иерархией: можно показать только элементы подчиненные группе или все.
Буду дорабатывать конечно, но начало вроде положено.
Элементы и группы справочников добавляются/помечаются на удаление. Надо бы еще удаление помеченных объектов сделать. Но не успел.

Спасибо - посмотрю, когда будет время
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #89 - 11. Декабря 2011 :: 12:18
Печать  
trdm писал(а) 04. Декабря 2011 :: 20:15:
посмотри мой Receptor там есть модуль uodbmanager. Как раз реализует форму списка справочника. реализована пара тройка моделей: Иерархическая с элементами и без, табличная с управляемой иерархией: можно показать только элементы подчиненные группе или все.
Буду дорабатывать конечно, но начало вроде положено.
Элементы и группы справочников добавляются/помечаются на удаление. Надо бы еще удаление помеченных объектов сделать. Но не успел.


Скомпилировал из запустил под Линуксом. Буду разбираться дальше - трудно разбираться в Си++...
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #90 - 11. Декабря 2011 :: 13:17
Печать  
blindvic писал(а) 11. Декабря 2011 :: 12:18:
Скомпилировал из запустил под Линуксом. Буду разбираться дальше - трудно разбираться в Си++...

Тут под линем собирают: http://linuxforum.ru/viewtopic.php?id=18317
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #91 - 11. Декабря 2011 :: 15:06
Печать  
Если я понял, то у тебя вся модель сразу заполняется? Если у тебя в справочнике 2000 наименований - все 2000 сразу у БД запрашиваются?
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #92 - 12. Декабря 2011 :: 07:24
Печать  
blindvic писал(а) 11. Декабря 2011 :: 15:06:
Если я понял, то у тебя вся модель сразу заполняется? Если у тебя в справочнике 2000 наименований - все 2000 сразу у БД запрашиваются?


Там QSqlQueryModel используется. Она не все данные сразу запрашивает, есть там вроде лимит у запроса.
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #93 - 12. Декабря 2011 :: 13:43
Печать  
trdm писал(а) 12. Декабря 2011 :: 07:24:
blindvic писал(а) 11. Декабря 2011 :: 15:06:
Если я понял, то у тебя вся модель сразу заполняется? Если у тебя в справочнике 2000 наименований - все 2000 сразу у БД запрашиваются?


Там QSqlQueryModel используется. Она не все данные сразу запрашивает, есть там вроде лимит у запроса.


Ну, а если ты перемотаешь вниз - все записи будут в памяти?

http://www.prog.org.ru/topic_13443_0.html
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #94 - 12. Декабря 2011 :: 14:41
Печать  
blindvic писал(а) 12. Декабря 2011 :: 13:43:
trdm писал(а) 12. Декабря 2011 :: 07:24:
blindvic писал(а) 11. Декабря 2011 :: 15:06:
Если я понял, то у тебя вся модель сразу заполняется? Если у тебя в справочнике 2000 наименований - все 2000 сразу у БД запрашиваются?


Там QSqlQueryModel используется. Она не все данные сразу запрашивает, есть там вроде лимит у запроса.


Ну, а если ты перемотаешь вниз - все записи будут в памяти?

http://www.prog.org.ru/topic_13443_0.html

Можно написать и свой контрол и свою модель.
У меня сейчас сложности с парсингом SQL запроса - остальное я думаю потяну. На этом пока споткнулся.
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #95 - 05. Июня 2012 :: 10:20
Печать  
Ну вот, довел проект до состояния, когда можно что-либо показать (alpha).
Код можно скачать здесь: https://github.com/warvariuc/wic
Вот видео как это скачать и запустить (испытывалось на Kubuntu 12.04):


Чуть-чуть кода:

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



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #96 - 05. Июня 2012 :: 10:30
Печать  
Сделал свой ORM - гибрид между DAL из web2py и ORM из Django.
Далее - выдержки из файла test_orm.py с комментариями.
Код
Выбрать все
import orm

# модели определяются в стиле Джанго:
class Books(orm.Model):
    """Books catalog"""
    # id field is already present
    name = orm.CharField(maxLength = 100, default = 'a very good book!!!')
    price = orm.fields.DecimalField(maxDigits = 10, fractionDigits = 2, default = '0.00', index = True) # 2 decimal places
    author = orm.RecordField('Authors', index = True)
    publication_date = orm.fields.DateField()
    timestamp = orm.fields.DateTimeField()

    def save(self): # переопределена функция сохранения:
        self.timestamp = DateTime.now()
        super().save()

db = orm.connect('sqlite://:memory:')  # создается адаптер базы данных

# создание новых записей в таблице:
authorsData = (
    dict(first_name = 'Sam', last_name = 'Williams'),
    dict(first_name = 'Steven', last_name = 'Levy'),
    dict(first_name = 'Richard', last_name = 'Stallman')
)

for data in authorsData:
    author = Authors(db = db, **data)
    author.save()

# можно работать с базой не используя модели - как в web2py - используя колонки:
db.select(Books.id, from_ = Books, where = (Books.price > '15'), limit = 10)

# можно задействовать модели:
book = Books.getOne(db, where = (Books.price > 15))

# можно делать UPDATE, причем используя аналоги выражений типа SET a = a + 1 :
db.update(Books.name('A new title with raised price'), Books.price(Books.price + 1), where = (Books.id == book.id))

# есть функции типа COUNT:
db.select(Authors.first_name, Authors.COUNT()).dictresult() 



Естественно, эта т.н. ORM еще разивается. Может быть у кого-нибудь появятся идеи получше.
« Последняя редакция: 05. Июня 2012 :: 16:19 - blindvic »  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #97 - 05. Июня 2012 :: 10:36
Печать  
По сравнению с первой версией, демо к-й я уже здесь вылаживал (но видео уже удалил) есть по крайней мере одна большая разница. Если в первой версии пользовательские модули создвались отдельно от "ядра" системы, то сейчас разработчик расширяет ядро, наследуя готовые классы и изменяя их вид/поведение. Это продолжает идею Qt/PyQt и дает больший контроль над приложением.

Вот, например, код "глобального модуля":

Код
Выбрать все
import sys, os

from PyQt4 import QtCore, QtGui

import orm

import wic
from wic import forms, w_main_window

appDir = os.path.dirname(os.path.abspath(__file__))
db = None


class MainWindow(w_main_window.WMainWindow):

    def onSystemStarted(self): # predefined function scalled when the core is ready
        self.statusBar().showMessage('Ready...', 5000)
        # `<>` in the beginning of the string means to treat it as HTML
        self.printMessage('<><b><span style="color: green">System started.</span> Welcome!</b>', True, False)
        print('Application directory: %s' % appDir)

        global db
        db = orm.SqliteAdapter('papp/databases/mtc.sqlite')

        from .reports import phone_number_search
        forms.openForm(phone_number_search.Form)
        #self.mainWindow.restoreSubwindows()


    def onSystemAboutToExit(self): # предопределенная процедура запускаемая при завершении работы системы
        return True # return False to cancel quitting

    def setupMenu(self):
        super().setupMenu()

        #Add actions for catalogs.
        # http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages
        menu = self.menu.catalogs
        from wic import menus
        catalogs = ('persons', 'locations', 'districts', 'regions', 'streets')
        for catalog in catalogs:
            modelName = catalog.capitalize()
            modelPath = 'papp.catalogs.' + catalog + '.' + modelName
            menus.addActionsToMenu(menu, (
                menus.createAction(menu, modelName, lambda *args, p = modelPath: forms.openCatalogForm(p, db),
                                   icon = ':/icons/fugue/cards-address.png'),
            ))

        menu = self.menu.reports
        reports = ('phone_number_search', 'test', 'lissajous', 'repayment_schedule')
        for report in reports:
            reportName = report.capitalize()
            reportPath = 'papp.reports.' + report + '.Form'
            menus.addActionsToMenu(menu, (
                menus.createAction(menu, reportName, lambda *args, p = reportPath: forms.openForm(p),
                                   icon = ':/icons/fugue/application-form.png'),
            ))



def test():
    wic.app.showInformation('test', 'Это сообщение из процедуры "глобального" модуля') 

  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #98 - 05. Июня 2012 :: 12:08
Печать  
питонщики будут счастливы...
  
Наверх
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: wic: Python + PyQt4
Ответ #99 - 05. Июня 2012 :: 12:22
Печать  
Очень интересно, начинаю смотреть что к чему Очень довольный
  
Наверх
 
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: wic: Python + PyQt4
Ответ #100 - 06. Июня 2012 :: 08:27
Печать  
Под виндой тоже все запустилось на ура. Улыбка Что заметил, память не освобождается при закрытии больших форм. Хотя если свернуть-развернуть приложение, очистилась. И в списках записи подгружаются по 100 шт., заметно притормаживание, но только на большой таблице. Не привычно минимизация окон, только в менюхе.
Какие планы на будущее? Если проект движется в сторону создания 1с-подобной системы, готов принять участие.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #101 - 06. Июня 2012 :: 10:01
Печать  
Boris_1c писал(а) 06. Июня 2012 :: 08:27:
И в списках записи подгружаются по 100 шт., заметно притормаживание, но только на большой таблице. Не привычно минимизация окон, только в менюхе.
Какие планы на будущее? Если проект движется в сторону создания 1с-подобной системы, готов принять участие.

Тормоза из-за JOIN и LIMIT/OFFSET, я думаю (наверное можно как-то оптимизировать это дело, но я не гуру баз данных). Если плюнуть на количество записей, можно сделать прокрутку постранично по первичному ключу.
Насчет минимизации - можно убрать таббар и свертывание окон будет как в 1С. Окно можно сделать restore/maximize если сделать двойной щелчок на его заголовке.

Далее хотелось бы сделать регистры и документы.

Нужны идеи по организации меню - по какой схеме позволить пользователю удобно добавлять/удалять элементы меню.

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

Хотелось бы Qt Designer встроить в платформу - такое возможно.

Хотелось бы услышать твое мнение насчет текущей реализации.

Нужно доработать ORM - убрать баги, добавить фичи, доработать бэкенды к MySQL и PostgreSQL.
  
Наверх
 
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: wic: Python + PyQt4
Ответ #102 - 06. Июня 2012 :: 11:25
Печать  
Документы и Регистры однозначно в приоритете. На перспективу надо подумать, как хранить структуру бд во внешнем хранилище, типа md (может даже каталог). И по этому хранилищу генерировать классы/формы для ORM. Самая большая проблема видимо реструктуризация БД?
Меню можно и попозже сделать..
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #103 - 06. Июня 2012 :: 11:34
Печать  
Boris_1c писал(а) 06. Июня 2012 :: 11:25:
Документы и Регистры однозначно в приоритете. На перспективу надо подумать, как хранить структуру бд во внешнем хранилище, типа md (может даже каталог). И по этому хранилищу генерировать классы/формы для ORM. Самая большая проблема видимо реструктуризация БД?
Меню можно и попозже сделать..


Мне нравится, что структура БД задается через модели. Это читабельно и учитывается системой контроля версий (если я тебя правильно понял). Правда хотелось бы модели хранить все-таки отдельно.

Насчет реструктуризиации БД - не думаю что проблема такая уж и большая. Там уже есть зачатки - в orm.adapters уесть методы getColumns() и getTables(). Надо теперь сделать отчет к-й будет сравнивать полученные колонки с колонками моделей, показывать разницу и применять действия пользователя.
  
Наверх
 
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: wic: Python + PyQt4
Ответ #104 - 06. Июня 2012 :: 12:05
Печать  
Цитата:
Мне нравится, что структура БД задается через модели. Это читабельно и учитывается системой контроля версий (если я тебя правильно понял). Правда хотелось бы модели хранить все-таки отдельно.
В конечном итоге нужен конфигуратор(конвертер), который должен будет обновлять модели, структуру бд, формы объектов (либо определенные в ручную, либо создаваемые автоматом). То есть для каждого объекта метаданных нужна папка с элементами к нему относящимися, типа мдшника разобранного GCOMP. А менюху на первом этапе можно по структуре этих папок формировать.
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #105 - 06. Июня 2012 :: 12:32
Печать  
blindvic писал(а) 06. Июня 2012 :: 10:01:
Хотелось бы Qt Designer встроить в платформу - такое возможно.

Я тут к кекси присматриваюсь - тоже ведь среда и готового в ней много есть. Редактор там встроенный. Не знаю насколько хороший.
  
Наверх
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: wic: Python + PyQt4
Ответ #106 - 06. Июня 2012 :: 12:41
Печать  
а кинь ссылку плиз, или название настоящее, гугл только кексы выдаёт))
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #107 - 06. Июня 2012 :: 13:37
Печать  
  
Наверх
 
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: wic: Python + PyQt4
Ответ #108 - 06. Июня 2012 :: 19:58
Печать  
Как это только на кедах работает..
  
Наверх
 
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: wic: Python + PyQt4
Ответ #109 - 07. Июня 2012 :: 09:54
Печать  
По справочникам ещё многоуровневость, подчиненность.. Сложно реализуется? В papp классе справочника ссылка на себя же добавляется, где-то надо указать что он иерархический.. затем catalog надо править?
И журналы например, они ж мало чем отличаются от справочников, от чего наследоваться будут? Может есть записки по структуре, для облегчения ковыряния в коде?
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #110 - 09. Июня 2012 :: 09:45
Печать  
Boris_1c писал(а) 07. Июня 2012 :: 09:54:
По справочникам ещё многоуровневость, подчиненность.. Сложно реализуется? В papp классе справочника ссылка на себя же добавляется, где-то надо указать что он иерархический.. затем catalog надо править?
И журналы например, они ж мало чем отличаются от справочников, от чего наследоваться будут? Может есть записки по структуре, для облегчения ковыряния в коде?


papp - модуль с "конфигурацией". catalog == справочник.

Файл: orm/models.py

Код
Выбрать все
class Model(metaclass = ModelMeta):
    """Base class for all tables. Class attributes - the fields.
    Instance attributes - the values for the corresponding table fields.
    """
    # default fields
    id = orm.IdField() # row id. This field is present in all tables
    timestamp = orm.DateTimeField() # version of the record - datetime (with milliseconds) of the last update of this record 



Т.е. каждая модель по умолчанию имеет два поля (колонки в базе данных): id, timestamp

Файл: wic/forms/catalog/w_catalog_view_model.py:

Код
Выбрать все
class CatalogModel(orm.Model):
    """Base model for all catalogs.
    """
    deleted = orm.BooleanField() 



CatalogModel (модель справочника) является подклассом абстрактной модели, у к-й добавлено поле deleted (удалена ли запись).

Чтобы сделать иерархию, по идее надо добавить еще поле parent:

Код
Выбрать все
class CatalogModel(orm.Model):
    """Base model for all catalogs.
    """
    parent = orm.orm.RecordField('CatalogModel', index = True)
    deleted = orm.BooleanField() 



'CatalogModel' указано в кавычках, потому что в момент создания класса имени CatalogModel еще не существует. Если передается строка, она трактуется как путь к модели. Если нет точек - значит это имя модели в текущем модуле. В Джанго, по-моему, тоже так: https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey

После добавления поля parent к модели, надо изменить вьюшку в том же файле (WCatalogViewModel). Для этого надо почитать: http://qt-project.org/doc/qt-4.8/QAbstractTableModel.html
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #111 - 09. Июня 2012 :: 09:53
Печать  
Советую, для того чтобы легче разбираться в коде и модифицировать его, использовать Aptana Studio 3. В большинстве случаев наведешь курсор на имя переменной, сделаешь Ctrl+Click и он тебе покажет где это имя было определено.
  
Наверх
 
IP записан
 
vasjakur
YaBB Newbies
*
Отсутствует



Сообщений: 7
Зарегистрирован: 06. Ноября 2006
Re: wic: Python + PyQt4
Ответ #112 - 09. Июня 2012 :: 11:37
Печать  
Несколько моментов:

1) Технический: куча кода в __init__.py, вплоть до того, что это вообще единственный файл в каталоге, содержащий весь функционал пакета. Это как-то неправильно, ЕМНИП - иниты предназначены для инициализации пакета.
2) Идеологический: своя ОРМ.... Не проще ли взять SQLAlchemy + Elixir, если душа требует именно ActiveRecord? По крайней мере не надо будет заморачиваться с написанием хитровыделанного механизма  запросов.
3) Python 3... куча библиотек и мануалов для начинающих оказались за бортом. Хотя уникод, да.
4) Формы в ui. Лучше бы уж прямо в коде с хелперами, IMHO
5) PyQT стоит денег для коммерческого применения. Почему не PySide?
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #113 - 09. Июня 2012 :: 11:53
Печать  
vasjakur писал(а) 09. Июня 2012 :: 11:37:
Несколько моментов:

1) Технический: куча кода в __init__.py, вплоть до того, что это вообще единственный файл в каталоге, содержащий весь функционал пакета. Это как-то неправильно, ЕМНИП - иниты предназначены для инициализации пакета.
2) Идеологический: своя ОРМ.... Не проще ли взять SQLAlchemy + Elixir, если душа требует именно ActiveRecord? По крайней мере не надо будет заморачиваться с написанием хитровыделанного механизма  запросов.
3) Python 3... куча библиотек и мануалов для начинающих оказались за бортом. Хотя уникод, да.
4) Формы в ui. Лучше бы уж прямо в коде с хелперами, IMHO
5) PyQT стоит денег для коммерческого применения. Почему не PySide?


Отвечу только на 5-й пункт. PyQt выпущена под GPL. GPL не значит, что софт нельзя продавать, а всего ли что ты должен открыть код пользователю. Кроме того, как ты собираешься скрыть питоновский код? Кроме того, насколько мне известно, PyQt и PySide совместимы: достаточно заменить `from PyQt4 import QtCore` на `from PySide import QtCore` (http://qt-project.org/wiki/Differences_Between_PySide_and_PyQt).
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #114 - 09. Июня 2012 :: 11:58
Печать  
vasjakur писал(а) 09. Июня 2012 :: 11:37:
4) Формы в ui. Лучше бы уж прямо в коде с хелперами, IMHO

Можно и так и так. Если укажешь путь к форме - он загрузить форму из ui  файла. Если сделаешь WForm._uiFilePath = None - система не будет загружать форму, тогда тебе надо переопределить WForm.setupUi().
  
Наверх
 
IP записан
 
vasjakur
YaBB Newbies
*
Отсутствует



Сообщений: 7
Зарегистрирован: 06. Ноября 2006
Re: wic: Python + PyQt4
Ответ #115 - 09. Июня 2012 :: 12:07
Печать  
blindvic писал(а) 09. Июня 2012 :: 11:53:
Отвечу только на 5-й пункт. PyQt выпущена под GPL. GPL не значит, что софт нельзя продавать, а всего ли что ты должен открыть код пользователю. Кроме того, как ты собираешься скрыть питоновский код? Кроме того, насколько мне известно, PyQt и PySide совместимы: достаточно заменить `from PyQt4 import QtCore` на `from PySide import QtCore` (http://qt-project.org/wiki/Differences_Between_PySide_and_PyQt).


GPL значит, что производная работа должна распространяться по GPL-совместимой лицензии. И если я захочу юридически ограничить модификацию своего кода, то не смогу. Не самая большая проблема лично для меня, или для вас - но для некоторых это всё же проблема, которой в принципе нет в PySide.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #116 - 09. Июня 2012 :: 12:09
Печать  
vasjakur писал(а) 09. Июня 2012 :: 11:37:
1) Технический: куча кода в __init__.py, вплоть до того, что это вообще единственный файл в каталоге, содержащий весь функционал пакета. Это как-то неправильно, ЕМНИП - иниты предназначены для инициализации пакета.

Можешь делать как хочешь, если собираешься использовать эту платформу:
Цитата:
Personally, I would rather not put substantial code in __init__.py, but there's no deep reason to avoid it -- it's purely a style choice.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #117 - 09. Июня 2012 :: 12:21
Печать  
vasjakur писал(а) 09. Июня 2012 :: 11:37:
2) Идеологический: своя ОРМ.... Не проще ли взять SQLAlchemy + Elixir, если душа требует именно ActiveRecord? По крайней мере не надо будет заморачиваться с написанием хитровыделанного механизма  запросов.

Надо посмотреть. Спасибо за наводку.

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

Буду под неё переделывать.
« Последняя редакция: 09. Июня 2012 :: 20:00 - blindvic »  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать