Несколько дней назад начал пробовать связку Python + Tkinter. С чего началось - сказано http://forum.russ2.com/index.php?showtopic=1711&view=findpost&p=22892 . Какие первые выводы?
Прежде всего, убедился, что это удачный выбор. Да, мне нужен именно объектно-ориентированный язык (подходит к моей голове намного лучше, чем какой-то иной - сужу по bash) , именно интерпретируемый (в компилируемом замучился бы с правкой исходников) и именно в паре с графической библиотекой (надо же иногда видеть питоновские объекты воочию ).
Так что в принципе вопрос решён : буду осваивать Python, причём в связке с Tkinter'ом.
Какие проблемы? Если кратко, то всё время возникают мелкие вопросы, ответы на которые обычно проще найти самому, чем спрашивать у других. Кавычки, отступы, методы, аргументы... и иной раз сложно сразу найти справку о том, что именно делать. Пакет документации к Питону установил, но и он не всегда помогает. Питон хорошо документирован, но не всегда могу сообразить, где именно искать нужную информацию.
Вот такой разве что вопрос могу задать (потому что он как раз не мелкий) : как лучше чайнику писать программы : в виде одного скрипта или в виде нескольких скриптов, выполняющих каждый свою часть работы? Спрашиваю потому что, по-моему, проще передавать данные из одного простенького скрипта в другой подобный же, чем соединять их в один сложный - у меня тут с переменными какие-то непонятки : по отдельности скриптики работают, а соединишь - начинается нечто непонятное. Или лучше сначала с переменными как следует разобраться?
Python вообще хороший выбор, можно вместо Tkinter-а использовать другие модули для работы с графикой PyGTK PyQt и другие.
После старого доброго паскаля система отступов у меня по первости воспринималась достаточно дико но сейчас привык и дискомфорта уже не испытываю ( правда Geany иногда глючит при переносе кусков кода из проги в прогу и отступы приходится в kwrite править ). Опять же типы переменных не надо жестко задавать как в паскале. На сегодняшний день единственное что мне не нравится в нем это 'ленивые' логические операторы, но это в общем обходимо условиями хоть и на мой взгляд не удобно.
На мой взгляд простые программы проще писать одним скриптом, для сложных можно выделить подпрограммы в отдельный модуль ( если планируется использовать
их еще в других проектах ). С переменными разбираться нужно, я например страдаю излишней глобализацией, хотя по уму лучше обходиться по возможности return -ом при работе с функциями.
Насколько я понимаю, в Tkinter'е есть всё для начала (и с большим избытком), так что не буду усложнять : пусть пока будет один Tkinter.
Отступы меня тоже сначала озадачили - непривычно как-то, что они так много значат. Но привык уже.
А вот насчёт поиска ответов на всяческие мелкие вопросы. Никак не получается через sys.argv передать из одного скрипта в другой значение переменной. Всё получаю сообщение
Иван посмотри тут : http://www.python.su/forum/viewtopic.php?id=7791
а вот очень интересный хелп по модулям : http://wiki.linuxformat.ru/index.php/LXF77:Python
Поставил пакет tk-demos - коллекция скриптов для демонстрации возможностей Tk, с возможностью правки на ходу. Очень наглядная штука, удобно поупражняться для начала, а главное - подсказывает идеи. Правда, скрипты на Tcl А есть подобный пакет (желательно тоже для Tk) со скриптами на Питоне? В альтовских репозиториях вроде нет.
Константин, вот я потренировался на чём попало и вернулся к wmfon'у - надо же попробовать прикрутить всё-таки предпросмотр. Итак, кнопка выбора должна сначала вызвать функцию предпросмотра; когда понравившийся файл выбран, то запускается твоя функция смены обоев (имя выбранного файла передаётся ей через переменную). И вот во что дело упёрлось : ведь tkFileDialog.askopenfilename (и, по-моему, все функции в tkFileDialog) - "одноразовый", а потому для последовательного просмотра картинок не годится. А есть в Питоне что-то такое, чтобы можно было, к примеру, одинарными щелчками мыши просматривать файлы в каталоге, а двойным щелчком - завершать функцию просмотра и вызывать функцию выбора обоев? Иначе говоря, есть ли файловый диалог, понимающий несколько разных способов выбора файла и реагирующий на них по-разному? Может, тут не Tkinter лучше использовать?
В Tkinter-е такого диалога с предпросмотром содержимого вроде нет, делать предпросмотр посредством canvas тоже не очень хорошо программа сразу потянет за собой pyton-module-imaging а это довольно много всякой гадости ( которая в том же Antique будет лишней ) + зависимость от Qt. Есть другая идея посмотреть в сторону внешнего просмотровщика возвращающего имя файла, в таком варианте от файлового диалога можно вообще избавиться.
А какой в Antique просмотровщик? Или тут можно не пристёгиваться к определённой программе?
Всё вроде просто : пишу функцию, которая запускает (к примеру) mirage, ловит адрес последнего открытого в нём файла и передаёт его в функцию выбора обоев. Но не могу найти, как заставить просмотровщик возвращать упомянутый адрес и как этот адрес ловить, и как вообще питоновские скрипты обмениваются данными с внешними программами. Методы в модуле subprocess ведь вроде не для этого?
Иван , все на самом деле не очень просто , было бы просто я бы давно это сам написал . Прогу даже с параметром можно вызвать используя модуль os
вот пример из того что сейчас пишу :
import os
#.............
os.system('mplayer cdda:// -cache 2500') # играем аудиодиск
модулем subprocess( вообще очень интересная штука) тоже можно решить эту проблему ( правда я его еще не ковырял ), в общем тебе и карты в руки, и в mirage не упирайся может тот же eog или что другое будет проще приделать к wmfon-у
mirage с помощью os.system я уже вызывал, и тоже с параметрами, и не сомневаюсь, что и другой просмотровщик можно так же использовать; тут нет проблемы. Мне другое не совсем понятно : получается, нет простого способа отслеживания из питоновского скрипта того, какие файлы открывает им же вызванная внешняя программа? То есть дело-то не в деталях, а вообще в том, как питоновские скрипты общаются с другими программами. Вот эта группа модулей - os, sys, subprocess и т.п. - для этого (кроме прочего) предназначена, их и надо ковырять? Я, честно говоря, думал, что отслеживание действий программы, которая вызвана из скрипта - вполне обычное дело (программу ведь вызываешь ради некого результата, так как же за ним не проследить?), и должна быть какая-то готовая функция для этого. Но если её нет, придётся в самом деле поразмыслить
Размышлять придется ! При запуске программы через os.system управление полностью передается программе ( хотя думаю можно и фоновым режимом поиграться и вывод в файл переназначить, а этот файл уже сканировать питоновской прогой ) модуль subprocess позволяет запустить внешнюю прогу параллельно основной, но с ним я пока еще не работал и что можно из этого получить не знаю. Так что простор для творчества огромный
Теперь уже яснее. Во всяком случае, понятно, где зарыта собака и как примерно её выкапывать; как понятно и то, что зарыта довольно глубоко Отделаюсь от срочных дел - займусь. В любом случае, придётся немного в теорию углубиться, а то насчёт взаимодействия процессов у меня весьма поверхностные знания
P.S. Тему переименовал : очевидно, что Tkinter - нечто вторичное.
Кстати, когда требуется как можно более полная информация по какому-то модулю, классу и т.п., то где лучше искать? Вот здесь : http://www.python.org/doc ?
Нашел описания большого количество модулей питона на русском : http://www.script-coding.info/Python/Otkidach3.html
Очень полезный хелп
Спасибо, пригодится. Но у меня проблемы не столько с английским, сколько с азами программирования (правда, ещё больше - со временем; эту хроническую проблему лучше бы не упоминать, но я, честно говоря, из-за неё никак не могу сосредоточиться на Питоне). Вот насчёт этого модуля subprocess. Экземпляр класса Popen - это объект-посредник между функцией, в которой он создаётся, и дочерним процессом? И ещё : запуск программы через shell и напрямую - а в чём принципиальная разница?
1) я тоже не знаю какой просмотровщик выводит имена в консоль, проверяется просто - запускаешь их из консоли и смотришь вывод, возможно идея вообще была ложной . Если все-таки найдешь такой посмотрим на его зависимости, тогда будет ясно подходит он для antique или нет.
2) Да в случае с wmfon-ом действительно фоновый режим скорее всего не нужен, я его привел тут как простую альтернативу модулю subprocess.
PS кстати какой средой разработки пользуешься? я перепробовал много: Geany, Idle, Eric, drpython везде свои глюки и баги ( с моей субъективной точки зрения )
так все достало что сидел одно время на связке konqueror+kwrite. Но недавно нашел то что нужно - medit, работает как Geany только без глюков с неправильным отображением пробелов. Рекомендую, только в меню Вид поставь галку отображать номера строк.
Консоль это как простейший вариант, если сумеешь выдрать имя файла другим способом, прекрасно, но честно говоря пока не представляю как вряд ли просмотровщики могут вернуть его в виде параметра ( хотя возможно какие-то и могут )
Запустил для пробы Мираж, поглядел в /proc его процесс, там много чего есть; вполне возможно, и имена файлов. Возможно. в эту сторону и нужно рыть. Правда, тогда просмотровщик в самом деле должен работать параллельно, а функция просмотра должна отлавливать из /proc его файлы и записывать в переменную; она, конечно, будет при этом менять значение, но в итоге в ней останется имя как раз последнего открытого файла, потому что его уже ничто не перезапишет. Вот так примерно. Это, конечно, просто фантазии, ничем не проверенные!
Теоретически этот вариант выглядит довольно просто : запускаем из скрипта просмотровщик, узнаём номер его процесса, потом в каталоге /proc/<номер процесса>/fd вылавливаем ) дескрипторы (а через них - и имена) открываемых просмотровщиком файлов-картинок. А вот как это выразить не на русском языке, а на Питоне - вопрос. Наверное, я рассуждаю, как чайник, не знающий реалий программирования, и лучше действовать как-то по-другому; но я просто исхожу из того, что инфу о любом процессе по идее лучше брать прямо из /proc, а не добывать окольными путями.
Вполне осушествимый вариант, попробуй для начала это сделать без питона в консоли, поюзай /proc в мс, если выдерешь оттуда имя файла, считай пол задачи решил, остальное уже дело техники
Во всех попадавшихся мне мануалах говорится, что в каталоге /proc/<pid>/fd открывается по одной ссылке на каждый открытый процессом файл. В действительности, как показали первые же эксперименты, всё далеко не так прямолинейно, так что сразу и не поймёшь, что к чему. Но деваться некуда, придётся углубляться в тему
Иван, в таком варианте надо наверное тебе написать просмотровщик для wmfon-а самому, моя идея к сожалению себя не оправдала. Фиг с ним пускай тянет за собой модуль imaging, это наверное все-равно более перспективный вариант чем попытка выдрать имя файла из того-же mirage.
Дискуссию про MPlayer и т.п. переместил в http://forum.russ2.com/index.php?showtopic=2352&st=30&start=30.
Насчёт просмотра в wmfon.
С помощью Tk его, как я понял, не сделать вообще (см. http://forum.russ2.com/index.php?showtopic=2422&view=findpost&p=23239). Тогда другие графические библиотеки использовать, где есть "неодноразовые" аналоги tkFileDialog.askopenfilename? А у них тоже свои зависимости? Короче, тут вопрос вписывания всего этого дела в Antique, а в этом я как-то не очень ориентируюсь.
Всё-таки размышляю, нельзя ли как-то выпытать у просмотровщика имя открываемого файла. Если этот файл в ядре никак не регистрируется, то в /proc лазить бесполезно, а у самой проги узнать... единственное, что приходит в голову - это сохранение из неё файла куда надо; но, по-моему, с какими бы опциями ни запускать просмотровщик, всё равно это получается совсем уж негибкий вариант, и потому не годится. А какие ещё есть лёгкие просмотровщики, уместные в Antique? Может, какой-то из них открывает картинки "нормальным" способом? Тогда вопрос решится. Правда, в таком случае решение будет пристёгнуто именно к этому просмотровщику.
А не проще ковырнуть сам Мираж и кое-что в нём приписать, чтобы он, открывая файл, отправлял его адрес туда, откуда его будет тут же забирать скрипт, о котором мы тут выше говорили?
План простой. В меню Миража будет пункт "Выбор фона" (или нечто подобное), а к нему пристёгнута функция, отправляющая адрес открытого файла в условленное место (в файл с фиксированным именем хотя бы), откуда его немедленно забирает wmfon и записывает в соответствующую переменную; дальше всё ясно. Сейчас роюсь в Мираже (копию его сделал, с ней и химичу), размышляя, как это реализовать; никогда не бродил по такой большой (для меня) программе, сложно ориентироваться, тем более что успел уже отчасти подзабыть то немногое, что знал о Питоне
Думаю, это самый простой способ сделать предпросмотр, не притягивая дополнительного софта.
Это связано не с лицензией, а с обновлениями, при первом обновлении из бранча на более свежую версию пакета, пропатченный mirage будет заменен на нормальный
и wmfon работать не будет. Хотя если поставить родной mirage в параллель к пропатченному, тоже получится бардак, значит надо прописывать зависимость на удаление, в общем все довольно паршиво с этими форками получается
Можно, наверное, использовать пропатченный Мираж под его собственным именем, а в дистр добавить скрипт, который будет автоматически заново патчить Мираж после каждого его обновления - только не знаю, насколько это сложно. Конечно, если есть какой-то более простой способ решения проблемы с предпросмотром, то можно его попробовать, но вроде как такового не видно.
Альтернативный способ вижу только один , написать просмотровщик самому, задача довольно интересная, но у меня сейчас на нее нет времени, так что либо mirage ковыряй, либо просмотровщик пиши
Если просмотровщик писать на замену Миражу, то он же у меня заведомо хуже Миража получится. А если чисто для предпросмотра в wmfon, то зачем в дистре-минималке две дублирующих программы, и стоит ли дело труда? Уж лучше попробую, как время будет, слегка хакнуть Мираж
Вроде готово. Запускаешь wmfon, жмёшь "Просмотр", запускается Мираж, открываешь там нужную картинку, далее "Файл - Select", закрываешь Мираж, в wmfon жмёшь "Выбор фона" - и наслаждаешься новой картинкой на рабочем столе Видимо, что-то можно улучшить, и с обновлением Миража проблема остаётся, но хотя бы в общем вопрос, похоже, решён. Модифицированные mirage и wmfon хотел выложить здесь, но почему-то неудачно. Константин, я тебе их лучше электронкой отправлю.
Отлично ! отправляй
Ещё немного подправил wmfon : в конец функции prosmotr дописал строку
f_name(event)
а кнопку "Выбор фона" убрал как ставшую лишней. Теперь при закрытии Миража wmfon меняет фоновую картинку автоматически.
/usr/lib/python2.5/site-packages
Подсунул туда вместо mirage.py , пока работать не хочет :
Ну это же wmfon не запускается, а не Мираж. У меня всё на ура идёт. Может, при архивировании/сжатии что-то поломалось? А, кстати, мой Мираж сам по себе ( python /usr/lib/python2.5/site-packages/mirage.py) запускается?
Все запускается, эти ошибки появляются когда нажимаешь на кнопку выход в мираже, mirage.py запускается нормально
Проверил аж несколько раз : сообщений об ошибках никаких, фон успешно заменяется.
Дело темное, буду разбираться !
Чудеса да и только, после перезагрузки компа все нормально работает , никаких ошибок. Иван 2 предложения по-проге :
1) переименовать кнопку Просмотр в кнопку Выбрать фон
2) сделать кнопку Справка при нажатии на которую вываливается краткая инструкция по работе с прогой, главное напиши там о необходимости нажимать на Select в мираже для выбора картинки.
3) пока ты об этом думаешь, я подумаю как эту штуку пакетить.
PS Иван, отличная прога получилась, теперь ты настоящий кодер
Ну, настоящий или нет, а приятно, что получилось нечто хоть немного полезное
Прилагаю обновлённый вариант wmfon'а. Справку, конечно, можно и подформатировать, но сейчас нет времени разбираться, как это делается.
Отлично , со справкой есть 2 варианта сейчас объясню тебе как это делается в принципе, будет полезно на будущее прием простой но полезный, я такими штуками пользуюсь постоянно. Итак при нажатии на справку у тебя каждый раз открывается текстовое поле, а старое не закрывается.
В общем тебе надо отслеживать кол-во нажатий кнопки что-бы сделать из нее триггер на первое нажатие окно открывается, на второе закрывается
Делаешь какую либо переменную n и указываешь ее значение равной n= 2 в начале проги .В процедуре обработчика кнопок ( кстати не забудь указать в ней global n ) выполняешь
проверку четности :
global n
m = n%2 # остаток от деления на 2
if m == 0 :
....# открываем окно
else :
.... # закрываем окно
n= n+1
после чего выходим из процедуры.
Очень неплохо открывать справку в дочернем окне ( при этом лучше рамку с кнопкой закрытия у него отрубить , а то пользователь закроет его крестом и получится так что для получения следующего окна со справкой надо будет 2 раза нажимать на кнопку закрыть, ничего страшного в принципе , но бага )
Можно и в основном конечно, но тогда надо будет боюсь решать лишние проблемы с геометрией, для восстановления исходного р-ра окна. В общем нет предела совершенству
Да я думаю кнопки выход и справка надо сделать такого-же р-ра как и остальные.
А прога получилась не просто полезная а очень полезная , так что допиливай ее дальше по-мере возможности и в репу ей клубную и в репу по antique и в мою репу по WM-у ей будет прямая дорога
PS так как движок форума игнорирует несколько пробелов подряд заменил их на точки
Не успел выяснить, как справку пристегнуть к основному окну, а вообще получилось примерно так :
Со справкой получилось все отлично , я нашел кстати в чем глюк с mirage:
Попробуй открыть папку с картинками с кирилическим именем например ~/Обои , на этом все рушится :
Мираж записывал имя файла нормально, так что в нём ничего менять не стал. А вот f_name исправил :
Отлично, на выходных постараюсь опакетить
Ну вот собрал пакетик, причем он с mirage совершенно не конфликтует, а наоборот, в нем mirage прописан в зависимостях. В общем хакерской программе хакерский пакет
Просьба потестить после чего засуну во все наши репы :
http://kostyalamer.narod.ru/wmfon/wmfon-1.3-alt1.noarch.rpm
http://kostyalamer.narod.ru/wmfon/wmfon-1.3-alt1.src.rpm
Да уж , осталось от экспериментов, сейчас поправлю !
Поменял пакеты на исправленные, скачивай по тем же ссылкам.
Теперь работает, ошибок не заметно.
Залил куда мог , и на сайт тоже : http://kostyalamer.narod.ru/wmfon/wmfon.html
Эта версия написана точно тобой , так что принимай поздравления , надо будет подумать к чему бы еще приложить твои кодерские способности !
У меня сейчас всяческие интернетовские соединения (завязанные большей частью на спутник) раскиданы как попало и автоматизированы самопальными мини-скриптами на shell; причём отчасти конфликтуют между собой, потому что сложно там всё : gprs задействован, спутник, локальный прокси, плюс перебои со связью добавляют проблем. Думаю написать на Питоне скрипт, который создаст единый интерфейс (графический, конечно) для всего этого хозяйства, в том числе для быстрого (нажатием кнопки) разрешения конфликтов. План, в принципе, уже составлен, только времени сейчас на программирование нет. Эта программа может и некоторым другим здесь пригодиться : спутниковая тарелка у нас в деревне - штука очень важная. Ну и для Antique, если нужно, готов поработать, только не прямо сейчас.
Тоже начал потихоньку осваивать питон. Сначала пробовал изучать С++ и QT, но здесь вырисовывается долгий и сложный вариант... А на питоне как то все прост, легко и сразу получается, т.е. производительность труда намного выше. В общем, наш метод... Может к январю не торопясь напишу программку по автоматизации приема данных с телеметрии.
Да, Питон в самом деле легко осваивается. Я, правда, сейчас от него отвлёкся (и то, о чём в предыдущем сообщении говорил, остановилось ещё на стадии совершенствовании shell-скриптов), но, когда более-менее свободное время появится, непременно опять займусь Питоном.
Продолжаю писать скриптик (пока в виндос ) и возникли некие сложности.
Собственно скриптик представляет простейшую форму с кнопками, которые запускают 2 консольные программки. При запуске питон-скрипта одновременно появляется два окна, одно GUI, а второе окно консоли, в котором эти программки выводят сообщения.
Это удобно , но некрасиво как то. Окно консоли можно убрать, сменив расширение файла py на pyw. Но тогда теряется и информация от программок. Хотелось бы как то перенаправить вывод из консоли в текстовый виджет tkinter, т.е. сделать виртуальное окошко консоли, но никак не найду способа.
Боюсь, что одного Tkinter-а для этой цели не хватит, нужно поглядеть в сторону модуля subprocess, в нем реализована возможность перехвата вывода консольных команд, в переменную или файл : http://wiki.dieg.info/doku.php/subprocess
в простейших случаях можно и модулем os обойтись :
http://forum.vingrad.ru/forum/topic-109919/view-all.html
есть и другой способ : http://www.pydev.ru/topic/213/?page=1#post-933
Ну а загнать из переменной или файла текст в поле формы это уже дело техники.
Спасибо, попробую.
После некоторого перерыва опять вернулся к питонам. И столкнулся со шрифтами. Почему то tkinter дает разные относительные размеры шрифтов в разных ос. Например, в виндовсе они слишком большие, в линуксе маленькие. Прикрутил к программе менюшку, позволяющую устанавливать разммр вручную, но может есть другое какое решение?
ЗЫ: наткнулся на малоизвестный проект GUI для tkinter, называется PAGE. http://page.sourceforge.net/#Documentation Если он окажется легким в освоении, то это очень упростит разработку небольших питоновских tk программок
Спасибо, поспрашиваю. В том то и дело, что основы в любой области простые, а стоит чуть залезть в детали и начинается.
Практически под влиянием этой темы сел изучать питон, написал lines, если есть у кого возможность потестите плиз )
Это игрушка чтоль ?
PS Какие зависимости ? Попробую затестить.
Для желающих поэкспериментировать с python3 на сервере 179 школы имеется инструкция по его установке в альт линукс
http://server.179.ru/wiki/?page=DenisKirienko/Python/UstanovkaNaAltLinux&v=5z2
Python3 установиться в каталог /usr/local/bin
Для его вызова используем команду python3
Чтобы она выполнялась добавим путь поиска /usr/local/bin в системную переменную PATH
Для этого открываем в домашнем каталоге файл .bash_profile
находим там строчку:
# User specific environment and startup programs
и добавляем после нее:
PATH="$HOME/bin: $PATH:/usr/local/bin"
Всем хороша связка Geany + Python, только нет отладчика. А очень было бы удобно походить по шагам, посмотреть как меняются переменные.
Вот http://dev.svetlyak.ru/debugger-with-blackjack интересный пост с видео про консольный отладчик pdbpp. Там же ссылка на страницу его автора. Хорошо бы эту программу опакетить.
Новая версия linespy https://sourceforge.net/projects/linespy/files/linespy.0.0.5.zip/download Есть Гейм-овер считает очки, таймер.
Если какого-то из модулей python нет в репозитории альта, то это не значит, что его нельзя установить.
Ищем и ставим в synaptic пакет python-module-setuptools.
В этом пакете находится программа easy_install, которая ищет питон модуль по имени и устанавливает его из официального сайта python.
Например, надо поставить модуль xlrd для чтения exel файлов, которого нет в репозитории альта.
В консоли заходим в режим суперпользователя и командуем:
[root<>gravity ~]# easy_install xlrd
Ответ машины:
Searching for xlrd
Reading http://pypi.python.org/simple/xlrd/
Reading http://www.lexicon.net/sjmachin/xlrd.htm
Best match: xlrd 0.7.1
Downloading http://pypi.python.org/packages/source/x/xlrd/xlrd-0.7.1.zip#md5=851bd20873224d97cfb5ccca2d22b81c
Processing xlrd-0.7.1.zip
Running xlrd-0.7.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-A2ofKq/xlrd-0.7.1/egg-dist-tmp--9my5j
zip_safe flag not set; analyzing archive contents...
Adding xlrd 0.7.1 to easy-install.pth file
Installing runxlrd.py script to /usr/bin
Installed /usr/lib/python2.5/site-packages/xlrd-0.7.1-py2.5.egg
Processing dependencies for xlrd
Finished processing dependencies for xlrd
Итак, модуль успешно установлен.
to kostyalamer
Костя, ты никогда не пробовал организовать обмен данными между питоновским скриптом и и вызванным из него Xterm'ом? В манах и инете кое-что есть на эту тему, но применить почему-то не получается. Сначала что-то типа
Кстати, на ютубе имеется видеокурс по освоению питона с нуля http://www.youtube.com/watch?v=jMg12k-v75g
А еще питон изучают в Сколково http://www.youtube.com/watch?v=5bh3NNYKO-0&feature=related
Нашел хорошую инфу по Tkinter-у может кому-нибудь пригодится :
http://ru.wikiversity.org/wiki/%CA%F3%F0%F1_%EF%EE_%E1%E8%E1%EB%E8%EE%F2%E5%EA%E5_Tkinter_%FF%E7%FB%EA%E0_Python
Перенесено из темы "http://forum.russ2.com/index.php?showtopic=4389&view=findpost&p=48779"
Долго ловил книгу на ОЗОНе. Поймал
Теперь грызу Питон по книге
Пока не очень понял как работать с кнопками на форме... Тяжко в чужой программе сходу...
Я осваиваю то, что используется в ruleuser создаталем программы. Код там простой невизуальный который, но с кнопками я пока не знаю. Спасибо за ссылку!
Вроде исполльзуется gtk2
Пожалуйста , если gtk2 то вот хороший учебник по PyGTK :
http://pygtk.rosix.ru/%D1%83%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA-pygtk-2-0/
И ещё раз спасибо!
На самоизоляции решил научиться питону, и появились некоторые вопросы.
Нужно из строки:
kernel-image-std-def#1:5.4.68-alt1.1:p9+258798.40.5.2<>1601700122
Извлечь номер ядра то есть 5.4.68
Для этого я использую:
Ничего не помню Конечно, если бы попрактиковаться сейчас в Питоне, то вспомнил бы, но такое в ближайшее время точно не светит
Почитал повнимательнее ман, оказывается если в выводе stdout стоит флаг юникода то точки в регулярном выражении нужно экранировать иначе они интерпретируются как любой символ, а если нет флага то точка это точка.
Без экрана
f = re.findall(r'[0-9].[0-9].[0-9]{2}', s)
Конечный вариант более унифицирован.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)