LINUX.ORG.RU

Модуль myTkinter - упрощенное создание оконных интерфейсов на Python

 , ,


0

1

В статье описывается модуль myTkinter, существенно уменьшающий трудозатраты при создании оконных интерфейсов на Python на основе стандартного модуля Tkinter.

Значительно упрощается создание меню, формирование и упаковка окна. Набор поддерживаемых виджетов сравнительно невелик, но вполне достаточен для решения задач типа «быстро сделать простую форточку».

Кроме стандартных виджетов, предлагается несколько специализированных, в частности виджет myTree позволяющий на основе интроспекции отображать в виде дерева и редактировать произвольные питоновские данные.

Сам модуль доступен по ссылке http://a-iv.ru/pyart/src/myTkinter.py

>>> статья

★★★★★

Проверено: maxcom ()

Прочитал статью. Это ваш личный велосипед?

Мой опыт работы с Tkinter показывает, что основная головная боль --- упаковка объектов. Я бы налегал на её совершенствование. Могу поучаствовать в анализе и работе над кодом, если смените лицензию с GPL2 only хотя бы на GPL2+ или лучше GPL3.

Vudod ★★★★★
()

----------
Для упаковки есть два алгоритма - pack (упаковка по строкам/столбцам) и grid (упаковка по сетке), ...
----------

Хм, все же есть три метода: pack, grid и place.

elipse ★★★
()
Ответ на: комментарий от baverman

>> raw_maker

Это не опечатка?

Опечатка, но системная;-) Спасибо, поправил.

2elipse

Хм, все же есть три метода: pack, grid и place.

place который сажает по заданным координатам? ИМНО неактуально, ни разу не пользовался (я для этого слишком ленив).

AIv ★★★★★
() автор топика
Ответ на: комментарий от Vudod

> Прочитал статью. Это ваш личный велосипед?

мой;-) надоело писать одно и то же, склепал этот модуль, сделал документацию - ну думаю надо поделится...

Мой опыт работы с Tkinter показывает, что основная головная боль --- упаковка объектов. Я бы налегал на её совершенствование.

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

Могу поучаствовать в анализе и работе над кодом, если смените лицензию с GPL2 only хотя бы на GPL2+ или лучше GPL3.

Две головы конечно лучше, буду рад. С лицензиями я честно говоря вопрос не изучал, и этих тонких тонкостей не улавливаю. Чем оно так принципиально?

AIv ★★★★★
() автор топика
Ответ на: комментарий от AIv

> ИМНО неактуально, ни разу не пользовался (я для этого слишком ленив).

Не следует путать точность и интимные переживания.

elipse ★★★
()
Ответ на: комментарий от elipse

Ок, Вы правы, спасибо за замечание.

AIv ★★★★★
() автор топика

>для решения задач типа «быстро сделать простую форточку».

Для этого существуют pyqt/pygtk.

fat_angel ★★★★★
()
Ответ на: комментарий от AIv

>Две головы конечно лучше, буду рад. С лицензиями я честно говоря вопрос не изучал, и этих тонких тонкостей не улавливаю. Чем оно так принципиально?

Оно будет лучше как сказал Vudod потому что лицензия GPL не разрешает изменения лицензии вообще, это оказалось проблемой не только для копирастов,но и для самого семейства GPL лицензий. С точки зрения лицензии, совмещение кода под разными версиями GPL это проблема и нарушение пункта о неизменяемости лицензии. Пока предложен такой выход, написать в тексте о лицензии: распространяется под лицензией GPLv2 и старше. Можно обозначать еще короче: GPLv2+ Таким образом вы как автор разрешаете использовать любую лицензию из GPL, начиная с версии 2.

pylin ★★★★★
()
Ответ на: комментарий от fat_angel

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

pylin ★★★★★
()

Стоп. А чем wxPython не угодил? Акценты, похоже, смещаются в пользу последнего от Tkinter.

iVS ★★★★★
()
Ответ на: комментарий от iVS

Я с wxPython не работал, не знаю.

AIv ★★★★★
() автор топика
Ответ на: комментарий от pylin

Ок, спасибо за объяснение. Значит будет GPLv2+

AIv ★★★★★
() автор топика
Ответ на: комментарий от iVS

А чем wxPython не угодил?

Так как это абстракция, то к проблемам gtk/qt неизбежно добавится его волшебство. А еще он вообще неизкоробочный.

baverman ★★★
()
Ответ на: комментарий от iVS

Стоп. А чем wxPython не угодил? Акценты, похоже, смещаются в пользу последнего от Tkinter.

wxPython --- это ведь более мощное решение. Оно представляет собою дополнительную прослойку над GTK+ в Линуксе и WinAPI в Винде. При этом оно действительно неизкоробочное, т.е. требует отдельной установки и настройки, что иногда неудобно.

Если хочется быстро слепить несложный GUI с хорошею переносимостью и низким потреблением, Tkinter по прежнему актуален.

Вопросы к докладчику:

  • для Python3 делать будете ли?
  • планируете ли использовать какую-нибудь систему разработки/контроля версий типа git, svn, ?..
  • планируете ли выкладывать на sourceforge.net или куда-либо ещё?

Просто для совместной разработки это будет удобно рано или поздно.

Vudod ★★★★★
()
Ответ на: комментарий от Vudod

планируете ли выкладывать на sourceforge.net или куда-либо ещё?

sf? nowai! если что, рекомендую выкладывать на code.google.com

shty ★★★★★
()
Ответ на: комментарий от Vudod

Чем сорсфорж не угодил?

1. низкая скорость
2. обилие рекламы
3. менее удобный интерфейс
4. по-истине дьявольская огороженность

shty ★★★★★
()
Ответ на: комментарий от Vudod

> Вопросы к докладчику:

для Python3 делать будете ли?

Нет, я им не пользуюсь и не понимаю смысла его появления.

планируете ли использовать какую-нибудь систему разработки/контроля версий типа git, svn, ?..

Я традиционно юзаю CVS, но планирую переползти под базар.

планируете ли выкладывать на sourceforge.net или куда-либо ещё?

Честно говоря нет. За ради одного модуля лень с ними связываться. У меня есть домен, есть хостинг и есть неск серверов (они правда без веба), мне хватает. Но если такая необходимость действительно возникнет - я не против.

Сейчас этот модуль часть моей развесистой библиотеки (мне так проще обновления накатывать), но он вполне самосдостаточен и видимо представляет отдельный интерес.

AIv ★★★★★
() автор топика
Ответ на: комментарий от AIv

Нет, я им не пользуюсь и не понимаю смысла его появления.

Самое существенное, что поправили в третьем Питоне --- работа со строками. Теперь все они юникод. Если вы сделаете

for el in 'человек':
    print el
во втором Питоне, получите хрень, в третьем (надо поставить скобки) всё будет в порядке.

В связи с этим улучшилась поддержка бинарных форматов и чтения файлов, т.к. теперь есть специальный тип «байты». Раньше на винде чтение бинарников часто оказывалось затруднительно, т.к. если там лежат сырые числа, чтение файла завершалось по достижении символа x85. Теперь, вроде, читается правильно.

Теперь форматирование в стиле % признано устаревшим и аналогичные5 методы введены в функцию print и модуль string.

Там много чего есть ещё, в том числе новый GIL в версии 3.2, но часть этого можно было бы сделать, не ломая совместимость.

Vudod ★★★★★
()
Ответ на: комментарий от Vudod

Как бы не в этот тред, но все что они там сделали хорошего не окупает сломанной совместимости. А если уж они взялись терять совместимость, так править надо было не эти мелочи а глобальные проблемы ЯП, типа неизменяемых типов. ИМНО.

AIv ★★★★★
() автор топика

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

ArtemZ
()
Ответ на: комментарий от ArtemZ

Вы убиили Томми, во-вторых тормоза с новой версией апдейт-менеджра ушли

pylin ★★★★★
()
Ответ на: комментарий от ArtemZ

Гхм... если Вы готовы предложить что то лучше + профинансировать переход нашей рабочей группы на это что-то, мы с радостью рассмотрим Ваше предложение.

Если нет - просто не читайте этот тред и другие треды про питон, берегите цветы своей селезенки.

AIv ★★★★★
() автор топика

делайте GUI на питоне @ обогащаете производителей железа

Sosiska
()
Ответ на: комментарий от shty

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

AIv ★★★★★
() автор топика
Ответ на: комментарий от AIv

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

вот здесь согласен

shty ★★★★★
()
Ответ на: комментарий от iVS

А чем wxPython не угодил?

лично я не сторонник wxPython на Линухе - он дергает GTK. Но, работая с GTK напрямую еще есть шансы на то, что у клиентов версия библиотеки будет совместима с той, которую ты использовал для разработки. С wх такие шансы невысоки. В свое время мы отказались от wx в том числе и по этим соображениям. А второе соображение, что у wx (по крайней мере с wxPython) была проблема с обратной совместимостью на неосновных версиях

cab ★★★★
()
Ответ на: комментарий от Vudod

Мой опыт работы с Tkinter показывает, что основная головная боль --- упаковка объектов.

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

cab ★★★★
()

Название странное, зачем писать «my...»? Есть смысл, конечно, если вы используете модуль у себя. Наверняка, у других тоже куча подобного «my_нечто», но это-то уже будет чужое. Да и понятийного смысла в «my» никакого, а раз модуль особенный, хотелось бы, чтобы и приставка у него была особенная.

iVS ★★★★★
()
Ответ на: комментарий от AIv

Заметил, что используют приставку mod, что может означать то ли modified, то ли modern, или все вместе.

iVS ★★★★★
()
Ответ на: комментарий от baverman

> У твоей дочки тоже такое имя?

Товарищи, если кому то не нравится имя модуля, форматирование и дизайн кода, название ф-й и т.д. - GPL позволяет это менять. Не стесняйтесь!

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

AIv ★★★★★
() автор топика
Ответ на: комментарий от AIv

Да нет же! Меня никаким боком не волнует как называется контрол, просто mysql назван в честь дочки Видениуса — 'My'.

baverman ★★★
()
Ответ на: комментарий от baverman

Не знал!

Нет, у меня дочку зовут по другому.... и в ее честь уже назван текстовый редактор, причем назван не мной;-)

AIv ★★★★★
() автор топика
Ответ на: комментарий от shty

> если что, рекомендую выкладывать на code.google.com

Только GitHub. Потому что эти ребята (в отличие от SF, Google Code и прочих BitBucket'ов) на самом деле понимают что такое социалка для кодеров и как ее правильно готовить.

Встроенный багтрекер, форк в одну кнопку, git push, и тут же делаем push request. И все это с понятным, проработанным веб-гуем.

Долго не нравилось, что они не дают на халяву приватные репы (в отличие от BitBucket'а), но грамотностью UI/UX по сравнению с конкурентами они меня все-таки подкупили.

anonymous
()

Больше страшных интерфейсов в массы?

X-Pilot ★★★★★
()
Ответ на: комментарий от anonymous

GitHub - overhyped.
1) Команда Bitbucket тоже не сидит сложа руки и раз в месяц выкатывает новые фичи.
2) Встроенный багтрекер в GitHub - полное УГ, по сравнению с тем, что предоставляет Bitbucket или хотя бы Google Code [не говоря о SF]

Поэтому утверждение «только GitHub» - это сплошная фанатичность и ничего более.

X-Pilot ★★★★★
()
Ответ на: комментарий от pylin

>>Две головы конечно лучше, буду рад. С лицензиями я честно говоря вопрос не изучал, и этих тонких тонкостей не улавливаю. Чем оно так принципиально?

Оно будет лучше как сказал Vudod потому что ... блаблабла ... еще короче: GPLv2+ Таким образом вы как автор разрешаете использовать любую лицензию из GPL, начиная с версии 2.

А теперь главный вопрос: за вами придут?

anonymous
()
Ответ на: комментарий от ananas

Если продолжать эту мысль то третью дочку придется называть: Галилео или Ганимед и через дефис добавлять к имени Эклипс.

anonymous
()

Закинь плиз на github или bitbucket (с чем тебе удобнее работать с git или mercurial).

anonymous
()
Ответ на: комментарий от anonymous

хотя вообще пофиг, сам закину когда время будет...

anonymous
()
Ответ на: комментарий от X-Pilot

>1) Команда Bitbucket тоже не сидит сложа руки и раз в месяц выкатывает новые фичи.

Какие? Я вот пользовался им в прошлом году, потом зашёл в этом - из изменений только блямбу «Atlassian» заметил на логотипе.

yoghurt ★★★★★
()
Ответ на: комментарий от anonymous

Не знаю - я о ttk от Вас тут в первый раз слышу. За ссылку спасибо, там появилось несколько виджетов которых так не хватало (в частность Tree), надо будет попробовать.

В принципе должно работать, все ведь то же самое.

AIv ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.