![]() |
Поделиться |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Поделиться |
![]()
Сообщение
#1
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Несколько дней назад начал пробовать связку Python + Tkinter. С чего началось - сказано здесь . Какие первые выводы?
Прежде всего, убедился, что это удачный выбор. Да, мне нужен именно объектно-ориентированный язык (подходит к моей голове намного лучше, чем какой-то иной - сужу по bash) , именно интерпретируемый (в компилируемом замучился бы с правкой исходников) и именно в паре с графической библиотекой (надо же иногда видеть питоновские объекты воочию ![]() Так что в принципе вопрос решён : буду осваивать Python, причём в связке с Tkinter'ом. Какие проблемы? Если кратко, то всё время возникают мелкие вопросы, ответы на которые обычно проще найти самому, чем спрашивать у других. Кавычки, отступы, методы, аргументы... и иной раз сложно сразу найти справку о том, что именно делать. Пакет документации к Питону установил, но и он не всегда помогает. Питон хорошо документирован, но не всегда могу сообразить, где именно искать нужную информацию. Вот такой разве что вопрос могу задать (потому что он как раз не мелкий) : как лучше чайнику писать программы : в виде одного скрипта или в виде нескольких скриптов, выполняющих каждый свою часть работы? Спрашиваю потому что, по-моему, проще передавать данные из одного простенького скрипта в другой подобный же, чем соединять их в один сложный - у меня тут с переменными какие-то непонятки : по отдельности скриптики работают, а соединишь - начинается нечто непонятное. Или лучше сначала с переменными как следует разобраться? -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]() |
![]()
Сообщение
#2
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Python вообще хороший выбор, можно вместо Tkinter-а использовать другие модули для работы с графикой PyGTK PyQt и другие.
После старого доброго паскаля система отступов у меня по первости воспринималась достаточно дико но сейчас привык и дискомфорта уже не испытываю ( правда Geany иногда глючит при переносе кусков кода из проги в прогу и отступы приходится в kwrite править ). Опять же типы переменных не надо жестко задавать как в паскале. На сегодняшний день единственное что мне не нравится в нем это 'ленивые' логические операторы, но это в общем обходимо условиями хоть и на мой взгляд не удобно. На мой взгляд простые программы проще писать одним скриптом, для сложных можно выделить подпрограммы в отдельный модуль ( если планируется использовать их еще в других проектах ). С переменными разбираться нужно, я например страдаю излишней глобализацией, хотя по уму лучше обходиться по возможности return -ом при работе с функциями. Сообщение отредактировал kostyalamer - 25.8.2010, 20:03 |
|
|
![]()
Сообщение
#3
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Насколько я понимаю, в Tkinter'е есть всё для начала (и с большим избытком), так что не буду усложнять : пусть пока будет один Tkinter.
Отступы меня тоже сначала озадачили - непривычно как-то, что они так много значат. Но привык уже. А вот насчёт поиска ответов на всяческие мелкие вопросы. Никак не получается через sys.argv передать из одного скрипта в другой значение переменной. Всё получаю сообщение Код TypeError: 'list' object is not callable и не могу выяснить, что делать. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#4
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Иван посмотри тут : http://www.python.su/forum/viewtopic.php?id=7791
а вот очень интересный хелп по модулям : http://wiki.linuxformat.ru/index.php/LXF77:Python |
|
|
![]()
Сообщение
#5
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Поставил пакет tk-demos - коллекция скриптов для демонстрации возможностей Tk, с возможностью правки на ходу. Очень наглядная штука, удобно поупражняться для начала, а главное - подсказывает идеи. Правда, скрипты на Tcl
![]() -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#6
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Поставил пакет tk-demos - коллекция скриптов для демонстрации возможностей Tk, с возможностью правки на ходу. Очень наглядная штука, удобно поупражняться для начала, а главное - подсказывает идеи. Правда, скрипты на Tcl ![]() Такого не видел, а вот , кстати полезная ссылочка http://www.tkdocs.com/tutorial/onepage.html она универсальна для Tkinter-а и Tcl. вроде бы я ее еще здесь не упоминал. |
|
|
![]()
Сообщение
#7
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Константин, вот я потренировался на чём попало и вернулся к wmfon'у - надо же попробовать прикрутить всё-таки предпросмотр. Итак, кнопка выбора должна сначала вызвать функцию предпросмотра; когда понравившийся файл выбран, то запускается твоя функция смены обоев (имя выбранного файла передаётся ей через переменную). И вот во что дело упёрлось : ведь tkFileDialog.askopenfilename (и, по-моему, все функции в tkFileDialog) - "одноразовый", а потому для последовательного просмотра картинок не годится. А есть в Питоне что-то такое, чтобы можно было, к примеру, одинарными щелчками мыши просматривать файлы в каталоге, а двойным щелчком - завершать функцию просмотра и вызывать функцию выбора обоев? Иначе говоря, есть ли файловый диалог, понимающий несколько разных способов выбора файла и реагирующий на них по-разному? Может, тут не Tkinter лучше использовать?
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#8
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
В Tkinter-е такого диалога с предпросмотром содержимого вроде нет, делать предпросмотр посредством canvas тоже не очень хорошо программа сразу потянет за собой pyton-module-imaging а это довольно много всякой гадости ( которая в том же Antique будет лишней ) + зависимость от Qt. Есть другая идея посмотреть в сторону внешнего просмотровщика возвращающего имя файла, в таком варианте от файлового диалога можно вообще избавиться.
|
|
|
![]()
Сообщение
#9
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
А какой в Antique просмотровщик? Или тут можно не пристёгиваться к определённой программе?
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#10
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
|
|
|
![]()
Сообщение
#11
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Всё вроде просто : пишу функцию, которая запускает (к примеру) mirage, ловит адрес последнего открытого в нём файла и передаёт его в функцию выбора обоев. Но не могу найти, как заставить просмотровщик возвращать упомянутый адрес и как этот адрес ловить, и как вообще питоновские скрипты обмениваются данными с внешними программами. Методы в модуле subprocess ведь вроде не для этого?
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#12
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Иван , все на самом деле не очень просто , было бы просто я бы давно это сам написал
![]() вот пример из того что сейчас пишу : import os #............. os.system('mplayer cdda:// -cache 2500') # играем аудиодиск модулем subprocess( вообще очень интересная штука) тоже можно решить эту проблему ( правда я его еще не ковырял ), в общем тебе и карты в руки, и в mirage не упирайся может тот же eog или что другое будет проще приделать к wmfon-у ![]() |
|
|
![]()
Сообщение
#13
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
mirage с помощью os.system я уже вызывал, и тоже с параметрами, и не сомневаюсь, что и другой просмотровщик можно так же использовать; тут нет проблемы. Мне другое не совсем понятно : получается, нет простого способа отслеживания из питоновского скрипта того, какие файлы открывает им же вызванная внешняя программа? То есть дело-то не в деталях, а вообще в том, как питоновские скрипты общаются с другими программами. Вот эта группа модулей - os, sys, subprocess и т.п. - для этого (кроме прочего) предназначена, их и надо ковырять? Я, честно говоря, думал, что отслеживание действий программы, которая вызвана из скрипта - вполне обычное дело (программу ведь вызываешь ради некого результата, так как же за ним не проследить?), и должна быть какая-то готовая функция для этого. Но если её нет, придётся в самом деле поразмыслить
![]() -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#14
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Размышлять придется ! При запуске программы через os.system управление полностью передается программе ( хотя думаю можно и фоновым режимом поиграться и вывод в файл переназначить, а этот файл уже сканировать питоновской прогой ) модуль subprocess позволяет запустить внешнюю прогу параллельно основной, но с ним я пока еще не работал и что можно из этого получить не знаю. Так что простор для творчества огромный
![]() |
|
|
![]()
Сообщение
#15
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Теперь уже яснее. Во всяком случае, понятно, где зарыта собака и как примерно её выкапывать; как понятно и то, что зарыта довольно глубоко
![]() ![]() P.S. Тему переименовал : очевидно, что Tkinter - нечто вторичное. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#16
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Кстати, когда требуется как можно более полная информация по какому-то модулю, классу и т.п., то где лучше искать? Вот здесь : http://www.python.org/doc ?
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#17
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Кстати, когда требуется как можно более полная информация по какому-то модулю, классу и т.п., то где лучше искать? Вот здесь : http://www.python.org/doc ? Очень неплохо посмотреть еще здесь: http://python.su/ эта статейка хороша в качестве быстрой подсказки по питону: http://habrahabr.ru/blogs/python/31180/ а эта книжка гораздо глубже:http://www.intuit.ru/department/pl/python/1/ По установленным модулям помогает такой способ в консоли даем команду python , получаем консоль питона Дальше набираем , например для Tkintera: import Tkinter help (Tkinter) Наслаждаемся подробным описанием ( на английском ) ![]() |
|
|
![]()
Сообщение
#18
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Нашел описания большого количество модулей питона на русском : http://www.script-coding.info/Python/Otkidach3.html
Очень полезный хелп ![]() |
|
|
![]()
Сообщение
#19
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Спасибо, пригодится. Но у меня проблемы не столько с английским, сколько с азами программирования (правда, ещё больше - со временем; эту хроническую проблему лучше бы не упоминать, но я, честно говоря, из-за неё никак не могу сосредоточиться на Питоне). Вот насчёт этого модуля subprocess. Экземпляр класса Popen - это объект-посредник между функцией, в которой он создаётся, и дочерним процессом? И ещё : запуск программы через shell и напрямую - а в чём принципиальная разница?
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#20
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Спасибо, пригодится. Но у меня проблемы не столько с английским, сколько с азами программирования (правда, ещё больше - со временем; эту хроническую проблему лучше бы не упоминать, но я, честно говоря, из-за неё никак не могу сосредоточиться на Питоне). Вот насчёт этого модуля subprocess. Экземпляр класса Popen - это объект-посредник между функцией, в которой он создаётся, и дочерним процессом? И ещё : запуск программы через shell и напрямую - а в чём принципиальная разница? Со временем, проблема знакомая ![]() n=os.popen('команда') запускает внешнюю команду ( mirage ничего в консоль к сожалению не выводит, надо подбирать чего-то другое ) и весь консольный вывод загоняет в переменную переменную в данном случае n, из этой строки и надо выдирать имя файла, как вариант. вообще с этими popen тема довольно интересная надо разбираться , я сейчас работаю примерно в том же направлении терзая из питона несчастный mplayer ![]() кстати если тебе надо что-бы внешняя команда не перехватывала управление у твоего скрипта а работала параллельно то как меня недавно осенило, надо просто ее запустить в фоне, вот в моем случае : os.system('mplayer -slave -quiet -input file=/tmp/mpinfile cdda:// &') |
|
|
![]()
Сообщение
#21
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Иван зачем тебе модуль subprocess, думаю что модуля os вполне хватит. Да без разницы, там сейчас явное дублирование одних модулей другим, так что мне всё равно, откуда брать Popen. mirage ничего в консоль к сожалению не выводит, надо подбирать чего-то другое А какой приемлемый для Antique просмотровщик выводит имена файлов в консоль? Я вообще даже не представляю, как это определить. кстати если тебе надо что-бы внешняя команда не перехватывала управление у твоего скрипта а работала параллельно то как меня недавно осенило, надо просто ее запустить в фоне, вот в моем случае : os.system('mplayer -slave -quiet -input file=/tmp/mpinfile cdda:// &') Хорошо. Но ведь если функция просмотра запустила просмотровщик и остановилась в ожидании, когда он отключится и выдаст имя последнего открытого файла, то получается разве не то же самое? Ну перехватил он управление - и что, ведь процесс скрипта (или Питона вообще) никуда от этого не исчезнет, просто ждёт? -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#22
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
1) я тоже не знаю какой просмотровщик выводит имена в консоль, проверяется просто - запускаешь их из консоли и смотришь вывод, возможно идея вообще была ложной . Если все-таки найдешь такой посмотрим на его зависимости, тогда будет ясно подходит он для antique или нет.
2) Да в случае с wmfon-ом действительно фоновый режим скорее всего не нужен, я его привел тут как простую альтернативу модулю subprocess. PS кстати какой средой разработки пользуешься? я перепробовал много: Geany, Idle, Eric, drpython везде свои глюки и баги ( с моей субъективной точки зрения ) так все достало что сидел одно время на связке konqueror+kwrite. Но недавно нашел то что нужно - medit, работает как Geany только без глюков с неправильным отображением пробелов. Рекомендую, только в меню Вид поставь галку отображать номера строк. |
|
|
![]()
Сообщение
#23
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
проверяется просто - запускаешь их из консоли и смотришь вывод, возможно идея вообще была ложной . Если все-таки найдешь такой посмотрим на его зависимости, тогда будет ясно подходит он для antique или нет. Попробовать можно. Но почему вывод непременно в консоль? Ведь вроде бы "трубопроводу" между процессами консоль не нужна (хотя мои знания на этот счёт явно следует освежить). кстати какой средой разработки пользуешься? Как ни странно, никакой. Попробовал IDLE, что-то (не помню что) не понравилось, так что юзаю просто kate, а иногда и вовсе kwrite. Но недавно нашел то что нужно - medit Поставлю. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#24
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Консоль это как простейший вариант, если сумеешь выдрать имя файла другим способом, прекрасно, но честно говоря пока не представляю как вряд ли просмотровщики могут вернуть его в виде параметра ( хотя возможно какие-то и могут )
|
|
|
![]()
Сообщение
#25
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Запустил для пробы Мираж, поглядел в /proc его процесс, там много чего есть; вполне возможно, и имена файлов. Возможно. в эту сторону и нужно рыть. Правда, тогда просмотровщик в самом деле должен работать параллельно, а функция просмотра должна отлавливать из /proc его файлы и записывать в переменную; она, конечно, будет при этом менять значение, но в итоге в ней останется имя как раз последнего открытого файла, потому что его уже ничто не перезапишет. Вот так примерно. Это, конечно, просто фантазии, ничем не проверенные!
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#26
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Теоретически этот вариант выглядит довольно просто : запускаем из скрипта просмотровщик, узнаём номер его процесса, потом в каталоге /proc/<номер процесса>/fd вылавливаем ) дескрипторы (а через них - и имена) открываемых просмотровщиком файлов-картинок. А вот как это выразить не на русском языке, а на Питоне - вопрос. Наверное, я рассуждаю, как чайник, не знающий реалий программирования, и лучше действовать как-то по-другому; но я просто исхожу из того, что инфу о любом процессе по идее лучше брать прямо из /proc, а не добывать окольными путями.
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#27
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Вполне осушествимый вариант, попробуй для начала это сделать без питона в консоли, поюзай /proc в мс, если выдерешь оттуда имя файла, считай пол задачи решил, остальное уже дело техники
![]() |
|
|
![]()
Сообщение
#28
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Во всех попадавшихся мне мануалах говорится, что в каталоге /proc/<pid>/fd открывается по одной ссылке на каждый открытый процессом файл. В действительности, как показали первые же эксперименты, всё далеко не так прямолинейно, так что сразу и не поймёшь, что к чему. Но деваться некуда, придётся углубляться в тему
![]() -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#29
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
придётся углубляться в тему Я основательно в неё углубился (работа ядра и процессов, их взаимодействие, открытие файлов, каналы, сокеты и т.п.), так что и про Питона забыл ![]() Кроме "нормального" способа открытия файлов процессами (о котором везде пишется), есть ещё и некий другой (о котором мне что-то не попадалось упоминаний). Нормальный - это когда ядро открывает запрошенный процессом файл, а процессу даёт на него ссылку, которую легко можно подсмотреть в каталоге /proc/<pid>/fd; что нам и нужно. Например, так открывают файлы OpenOffice.org Writer, Kaffeine, Kpdf и многие другие. Но Mirage (как и вообще все проверенные мною просмотровщики) использует другой способ, внешне выражающийся в том, что при открытии первого файла в /proc/<pid>/fd появляются inotify и два сокета. Насколько я понимаю, Мираж через эти сокеты просто закачивает файлы (картинки, то есть) в своё пространство, а ядро тут вроде как остаётся не у дел, а потому в /proc имени этого файла обнаружить не удаётся. Я даже утилитой lsof выпытывал : какой прогой открыт вот этот файл(картинка)? lsof отвечает : никакой! но вот же эта картинка передо мной, в Мираже открыта! Короче, вряд ли из /proc тут можно выцепить имя файла, разве что из самой программы. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#30
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Иван, в таком варианте надо наверное тебе написать просмотровщик для wmfon-а самому, моя идея к сожалению себя не оправдала. Фиг с ним пускай тянет за собой модуль imaging, это наверное все-равно более перспективный вариант чем попытка выдрать имя файла из того-же mirage.
|
|
|
![]()
Сообщение
#31
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
надо наверное тебе написать просмотровщик для wmfon-а самому в смысле на canvas'е? -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#32
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
в смысле на canvas'е? Да это будет не очень сложная задача , после твоих изысков в сторону процессов и субпроцессов (сам сейчас этой гадостью занимаюсь[субпроцессами] пишу морду для mplayer-а играющую аудиосидюки ). Потихоньку едет крыша ![]() ![]() |
|
|
![]()
Сообщение
#33
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Дискуссию про MPlayer и т.п. переместил в тему об Antique.
Насчёт просмотра в wmfon. С помощью Tk его, как я понял, не сделать вообще (см. сообщения 7 -8 этой темы). Тогда другие графические библиотеки использовать, где есть "неодноразовые" аналоги tkFileDialog.askopenfilename? А у них тоже свои зависимости? Короче, тут вопрос вписывания всего этого дела в Antique, а в этом я как-то не очень ориентируюсь. Всё-таки размышляю, нельзя ли как-то выпытать у просмотровщика имя открываемого файла. Если этот файл в ядре никак не регистрируется, то в /proc лазить бесполезно, а у самой проги узнать... единственное, что приходит в голову - это сохранение из неё файла куда надо; но, по-моему, с какими бы опциями ни запускать просмотровщик, всё равно это получается совсем уж негибкий вариант, и потому не годится. А какие ещё есть лёгкие просмотровщики, уместные в Antique? Может, какой-то из них открывает картинки "нормальным" способом? Тогда вопрос решится. Правда, в таком случае решение будет пристёгнуто именно к этому просмотровщику. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#34
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
А не проще ковырнуть сам Мираж и кое-что в нём приписать, чтобы он, открывая файл, отправлял его адрес туда, откуда его будет тут же забирать скрипт, о котором мы тут выше говорили?
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#35
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
А не проще ковырнуть сам Мираж и кое-что в нём приписать, чтобы он, открывая файл, отправлял его адрес туда, откуда его будет тут же забирать скрипт, о котором мы тут выше говорили? Можно и так, только перепакечивать его надо будет под другим именем, если можешь хакни его ![]() |
|
|
![]()
Сообщение
#36
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
План простой. В меню Миража будет пункт "Выбор фона" (или нечто подобное), а к нему пристёгнута функция, отправляющая адрес открытого файла в условленное место (в файл с фиксированным именем хотя бы), откуда его немедленно забирает wmfon и записывает в соответствующую переменную; дальше всё ясно. Сейчас роюсь в Мираже (копию его сделал, с ней и химичу), размышляя, как это реализовать; никогда не бродил по такой большой (для меня) программе, сложно ориентироваться, тем более что успел уже отчасти подзабыть то немногое, что знал о Питоне
![]() Думаю, это самый простой способ сделать предпросмотр, не притягивая дополнительного софта. только перепакечивать его надо будет под другим именем Это с лицензией связано? -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#37
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Это связано не с лицензией, а с обновлениями, при первом обновлении из бранча на более свежую версию пакета, пропатченный mirage будет заменен на нормальный
и wmfon работать не будет. Хотя если поставить родной mirage в параллель к пропатченному, тоже получится бардак, значит надо прописывать зависимость на удаление, в общем все довольно паршиво с этими форками получается ![]() |
|
|
![]()
Сообщение
#38
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Можно, наверное, использовать пропатченный Мираж под его собственным именем, а в дистр добавить скрипт, который будет автоматически заново патчить Мираж после каждого его обновления - только не знаю, насколько это сложно. Конечно, если есть какой-то более простой способ решения проблемы с предпросмотром, то можно его попробовать, но вроде как такового не видно.
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#39
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Альтернативный способ вижу только один , написать просмотровщик самому, задача довольно интересная, но у меня сейчас на нее нет времени, так что либо mirage ковыряй, либо просмотровщик пиши
![]() |
|
|
![]()
Сообщение
#40
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Если просмотровщик писать на замену Миражу, то он же у меня заведомо хуже Миража получится. А если чисто для предпросмотра в wmfon, то зачем в дистре-минималке две дублирующих программы, и стоит ли дело труда? Уж лучше попробую, как время будет, слегка хакнуть Мираж
![]() -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#41
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Если просмотровщик писать на замену Миражу, то он же у меня заведомо хуже Миража получится. А если чисто для предпросмотра в wmfon, то зачем в дистре-минималке две дублирующих программы, и стоит ли дело труда? Уж лучше попробую, как время будет, слегка хакнуть Мираж ![]() Хакай, полезное и увлекательное дело ![]() |
|
|
![]()
Сообщение
#42
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Вроде готово. Запускаешь wmfon, жмёшь "Просмотр", запускается Мираж, открываешь там нужную картинку, далее "Файл - Select", закрываешь Мираж, в wmfon жмёшь "Выбор фона" - и наслаждаешься новой картинкой на рабочем столе
![]() -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#43
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Отлично ! отправляй
![]() |
|
|
![]()
Сообщение
#44
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Ещё немного подправил wmfon : в конец функции prosmotr дописал строку
f_name(event) а кнопку "Выбор фона" убрал как ставшую лишней. Теперь при закрытии Миража wmfon меняет фоновую картинку автоматически. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#45
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Ещё немного подправил wmfon : в конец функции prosmotr дописал строку f_name(event) а кнопку "Выбор фона" убрал как ставшую лишней. Теперь при закрытии Миража wmfon меняет фоновую картинку автоматически. То что надо, а то меня лишняя кнопка смущала, можно вот еще чего сделать твой хакнутый мираж переименовать например в mirage1 я его подложу в папку с прогой и при опакечивании все это ляжет в папку /usr/share/wmfon, таким способом мы вообще уйдем от конфликтов с миражем. Присылай новую версию wmfon-а ![]() |
|
|
![]()
Сообщение
#46
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#47
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
|
|
|
![]()
Сообщение
#48
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
/usr/lib/python2.5/site-packages
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#49
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Подсунул туда вместо mirage.py , пока работать не хочет :
Код [/home/k/wmfon-1.2/1] python -u "wmfon.py"
Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 1414, in __call__ return self.func(*args) File "wmfon.py", line 83, in prosmotr f_name(event) File "wmfon.py", line 89, in f_name vybor(event) File "wmfon.py", line 64, in vybor strrnew=strru + fimg +strrd UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 12: ordinal not in range(128) |
|
|
![]()
Сообщение
#50
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Ну это же wmfon не запускается, а не Мираж. У меня всё на ура идёт. Может, при архивировании/сжатии что-то поломалось? А, кстати, мой Мираж сам по себе ( python /usr/lib/python2.5/site-packages/mirage.py) запускается?
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#51
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Все запускается, эти ошибки появляются когда нажимаешь на кнопку выход в мираже, mirage.py запускается нормально
![]() |
|
|
![]()
Сообщение
#52
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Проверил аж несколько раз : сообщений об ошибках никаких, фон успешно заменяется.
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#53
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Дело темное, буду разбираться !
|
|
|
![]()
Сообщение
#54
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Чудеса да и только, после перезагрузки компа все нормально работает
![]() 1) переименовать кнопку Просмотр в кнопку Выбрать фон 2) сделать кнопку Справка при нажатии на которую вываливается краткая инструкция по работе с прогой, главное напиши там о необходимости нажимать на Select в мираже для выбора картинки. 3) пока ты об этом думаешь, я подумаю как эту штуку пакетить. PS Иван, отличная прога получилась, теперь ты настоящий кодер ![]() |
|
|
![]()
Сообщение
#55
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Ну, настоящий или нет, а приятно, что получилось нечто хоть немного полезное
![]() Прилагаю обновлённый вариант wmfon'а. Справку, конечно, можно и подформатировать, но сейчас нет времени разбираться, как это делается.
Прикрепленные файлы
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#56
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Отлично , со справкой есть 2 варианта сейчас объясню тебе как это делается в принципе, будет полезно на будущее прием простой но полезный, я такими штуками пользуюсь постоянно. Итак при нажатии на справку у тебя каждый раз открывается текстовое поле, а старое не закрывается.
В общем тебе надо отслеживать кол-во нажатий кнопки что-бы сделать из нее триггер на первое нажатие окно открывается, на второе закрывается Делаешь какую либо переменную n и указываешь ее значение равной n= 2 в начале проги .В процедуре обработчика кнопок ( кстати не забудь указать в ней global n ) выполняешь проверку четности : global n m = n%2 # остаток от деления на 2 if m == 0 : ....# открываем окно else : .... # закрываем окно n= n+1 после чего выходим из процедуры. Очень неплохо открывать справку в дочернем окне ( при этом лучше рамку с кнопкой закрытия у него отрубить , а то пользователь закроет его крестом и получится так что для получения следующего окна со справкой надо будет 2 раза нажимать на кнопку закрыть, ничего страшного в принципе , но бага ) Можно и в основном конечно, но тогда надо будет боюсь решать лишние проблемы с геометрией, для восстановления исходного р-ра окна. В общем нет предела совершенству ![]() Да я думаю кнопки выход и справка надо сделать такого-же р-ра как и остальные. А прога получилась не просто полезная а очень полезная ![]() ![]() PS так как движок форума игнорирует несколько пробелов подряд заменил их на точки Сообщение отредактировал kostyalamer - 27.10.2010, 21:52 |
|
|
![]()
Сообщение
#57
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Не успел выяснить, как справку пристегнуть к основному окну, а вообще получилось примерно так :
Прикрепленные файлы
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#58
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Со справкой получилось все отлично , я нашел кстати в чем глюк с mirage:
Попробуй открыть папку с картинками с кирилическим именем например ~/Обои , на этом все рушится : Код Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 1414, in __call__ return self.func(*args) File "wmfon.py", line 85, in prosmotr f_name(event) File "wmfon.py", line 91, in f_name vybor(event) File "wmfon.py", line 66, in vybor strrnew=strru + fimg +strrd UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 12: ordinal not in range(128) <Tkinter.Event instance at 0xb6e4afac> *** Exited with status 1 *** в самом wmfon проблема решается так: Код os.path.expanduser('~') f = open(os.path.expanduser('~')+'/GNUstep/Defaults/WindowMaker','r',2) strr = f.read().decode('utf-8') f.close i = strr.find('WorkspaceBack = (') j = strr.find('\"',i) k = strr.find('\"',j+1) strru=strr[:j+1] strrd=strr[k:] strrnew=strru + fimg +strrd f = open(os.path.expanduser('~')+'/GNUstep/Defaults/WindowMaker','w',2) f.write(strrnew.encode('utf-8')) f.close видимо проблема где-то в mirage, при попытке записи пути файла. надо подключить к ней модуль codecs и доработать запись имени файла, хотя возможно еще f_name косячит с кодировкой, погляди ![]() |
|
|
![]()
Сообщение
#59
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Мираж записывал имя файла нормально, так что в нём ничего менять не стал. А вот f_name исправил :
Код def f_name(event): global fimg s = open("/tmp/s","r") fimg = unicode(s.read(), "utf8") vybor(event) Теперь всё работает и тогда, когда картинки в каталоге с кириллическим именем. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#60
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Отлично, на выходных постараюсь опакетить
![]() |
|
|
![]()
Сообщение
#61
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Ну вот собрал пакетик, причем он с mirage совершенно не конфликтует, а наоборот, в нем mirage прописан в зависимостях. В общем хакерской программе хакерский пакет
![]() Просьба потестить после чего засуну во все наши репы : http://kostyalamer.narod.ru/wmfon/wmfon-1.3-alt1.noarch.rpm http://kostyalamer.narod.ru/wmfon/wmfon-1.3-alt1.src.rpm |
|
|
![]()
Сообщение
#62
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Код def prosmotr(event): pr = subprocess.Popen('/home/k/wmfon-1.3/mirage') pr.communicate() f_name(event) /home/k/ - это зачем? При нажатии кнопки "Выбор фона" : Код Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 1414, in __call__ return self.func(*args) File "wmfon.py", line 83, in prosmotr pr = subprocess.Popen('/home/k/wmfon-1.3/mirage') File "/usr/lib/python2.5/subprocess.py", line 594, in __init__ errread, errwrite) File "/usr/lib/python2.5/subprocess.py", line 1097, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory <Tkinter.Event instance at 0xb6728aac> Или я чего-то не понимаю? -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#63
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Да уж , осталось от экспериментов, сейчас поправлю !
|
|
|
![]()
Сообщение
#64
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Поменял пакеты на исправленные, скачивай по тем же ссылкам.
|
|
|
![]()
Сообщение
#65
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Теперь работает, ошибок не заметно.
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#66
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
|
|
|
![]()
Сообщение
#67
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Залил куда мог
![]() |
|
|
![]()
Сообщение
#68
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Приятно почитать ![]() ![]() -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#69
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Эта версия написана точно тобой , так что принимай поздравления
![]() |
|
|
![]()
Сообщение
#70
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
У меня сейчас всяческие интернетовские соединения (завязанные большей частью на спутник) раскиданы как попало и автоматизированы самопальными мини-скриптами на shell; причём отчасти конфликтуют между собой, потому что сложно там всё : gprs задействован, спутник, локальный прокси, плюс перебои со связью добавляют проблем. Думаю написать на Питоне скрипт, который создаст единый интерфейс (графический, конечно) для всего этого хозяйства, в том числе для быстрого (нажатием кнопки) разрешения конфликтов. План, в принципе, уже составлен, только времени сейчас на программирование нет. Эта программа может и некоторым другим здесь пригодиться : спутниковая тарелка у нас в деревне - штука очень важная. Ну и для Antique, если нужно, готов поработать, только не прямо сейчас.
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#71
|
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Тоже начал потихоньку осваивать питон. Сначала пробовал изучать С++ и QT, но здесь вырисовывается долгий и сложный вариант... А на питоне как то все прост, легко и сразу получается, т.е. производительность труда намного выше. В общем, наш метод... Может к январю не торопясь напишу программку по автоматизации приема данных с телеметрии.
|
|
|
![]()
Сообщение
#72
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Да, Питон в самом деле легко осваивается. Я, правда, сейчас от него отвлёкся (и то, о чём в предыдущем сообщении говорил, остановилось ещё на стадии совершенствовании shell-скриптов), но, когда более-менее свободное время появится, непременно опять займусь Питоном.
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#73
|
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Продолжаю писать скриптик (пока в виндос
![]() Собственно скриптик представляет простейшую форму с кнопками, которые запускают 2 консольные программки. При запуске питон-скрипта одновременно появляется два окна, одно GUI, а второе окно консоли, в котором эти программки выводят сообщения. Это удобно , но некрасиво как то. Окно консоли можно убрать, сменив расширение файла py на pyw. Но тогда теряется и информация от программок. Хотелось бы как то перенаправить вывод из консоли в текстовый виджет tkinter, т.е. сделать виртуальное окошко консоли, но никак не найду способа. |
|
|
![]()
Сообщение
#74
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Боюсь, что одного 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 Ну а загнать из переменной или файла текст в поле формы это уже дело техники. |
|
|
![]()
Сообщение
#75
|
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Спасибо, попробую.
|
|
|
![]()
Сообщение
#76
|
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
После некоторого перерыва опять вернулся к питонам. И столкнулся со шрифтами. Почему то tkinter дает разные относительные размеры шрифтов в разных ос. Например, в виндовсе они слишком большие, в линуксе маленькие. Прикрутил к программе менюшку, позволяющую устанавливать разммр вручную, но может есть другое какое решение?
ЗЫ: наткнулся на малоизвестный проект GUI для tkinter, называется PAGE. http://page.sourceforge.net/#Documentation Если он окажется легким в освоении, то это очень упростит разработку небольших питоновских tk программок Сообщение отредактировал and - 11.9.2011, 20:34 |
|
|
![]()
Сообщение
#77
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
И столкнулся со шрифтами. Почему то tkinter дает разные относительные размеры шрифтов в разных ос. Например, в виндовсе они слишком большие, в линуксе маленькие. Прикрутил к программе менюшку, позволяющую устанавливать разммр вручную, но может есть другое какое решение? Наверное, лучше спрашивать там, где много спецов по Питону. Я, помнится, там буквально тонул в подобных частностях, на которые непонятно где взять ответ, хотя в общем в Питоне вроде как всё просто и ясно ![]() ![]() -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#78
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Наверное, лучше спрашивать там, где много спецов по Питону. Я, помнится, там буквально тонул в подобных частностях, на которые непонятно где взять ответ, хотя в общем в Питоне вроде как всё просто и ясно ![]() ![]() Да, мне сейчас к сожалению тоже пока не до python-а. А форум хороший вот : http://forum.script-coding.com/viewforum.php?id=16&p=1 там можно поспрашивать насчет шрифтов. |
|
|
![]()
Сообщение
#79
|
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Спасибо, поспрашиваю. В том то и дело, что основы в любой области простые, а стоит чуть залезть в детали и начинается.
|
|
|
![]()
Сообщение
#80
|
|
Любитель ![]() ![]() ![]() Группа: Пользователь Сообщений: 53 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1951 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Практически под влиянием этой темы сел изучать питон, написал lines, если есть у кого возможность потестите плиз )
Сообщение отредактировал komcumir - 12.10.2011, 14:02
Прикрепленные файлы
|
|
|
![]()
Сообщение
#81
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Активный Пользователь Сообщений: 1479 Регистрация: 7.6.2011 Вставить ник Цитата Пользователь №: 2118 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Это игрушка чтоль ?
PS Какие зависимости ? Попробую затестить. Сообщение отредактировал ksa - 12.10.2011, 13:41 -------------------- Пакеты на яндекс.диске
|
|
|
![]()
Сообщение
#82
|
|
Любитель ![]() ![]() ![]() Группа: Пользователь Сообщений: 53 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1951 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
|
|
|
![]()
Сообщение
#83
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Активный Пользователь Сообщений: 1479 Регистрация: 7.6.2011 Вставить ник Цитата Пользователь №: 2118 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
да игрушка lines (в первом приближении) зависимостей кроме питона вроде бы нет, файл перезалил (забыл в первом реализовать одно из правил lines) Ну, тогда надо бы еще выводить "game over" при заполнении всего поля, а то сейчас игра просто висит и ни на что не реагирует в такой ситуации... PS В остальном, вроде, играбельно. Сообщение отредактировал ksa - 12.10.2011, 17:43 -------------------- Пакеты на яндекс.диске
|
|
|
![]()
Сообщение
#84
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Практически под влиянием этой темы сел изучать питон, написал lines, если есть у кого возможность потестите плиз ) 1) Погляди еще эту темку : http://forum.altlinux.org/index.php/topic,...7.html#msg96647 2) Все работает ![]() |
|
|
![]()
Сообщение
#85
|
|
Любитель ![]() ![]() ![]() Группа: Пользователь Сообщений: 53 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1951 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Ну, тогда надо бы еще выводить "game over" при заполнении всего поля, а то сейчас игра просто висит и ни на что не реагирует в такой ситуации... PS В остальном, вроде, играбельно. ну дык еще не доделана ), остальное уже по мелочи осталось ) главное было реализовать поиск пути и удаление шаров... |
|
|
![]()
Сообщение
#86
|
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Для желающих поэкспериментировать с python3 на сервере 179 школы имеется инструкция по его установке в альт линукс
http://server.179.ru/wiki/?page=DenisKirie...Linux&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" |
|
|
![]()
Сообщение
#87
|
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Всем хороша связка Geany + Python, только нет отладчика. А очень было бы удобно походить по шагам, посмотреть как меняются переменные.
Вот тут интересный пост с видео про консольный отладчик pdbpp. Там же ссылка на страницу его автора. Хорошо бы эту программу опакетить. Сообщение отредактировал and - 15.10.2011, 19:11 |
|
|
![]()
Сообщение
#88
|
|
Любитель ![]() ![]() ![]() Группа: Пользователь Сообщений: 53 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1951 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Новая версия linespy https://sourceforge.net/projects/linespy/fi....5.zip/download Есть Гейм-овер считает очки, таймер.
|
|
|
![]()
Сообщение
#89
|
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Новая версия linespy https://sourceforge.net/projects/linespy/fi....5.zip/download Есть Гейм-овер считает очки, таймер. Ага. Потестил. Работает |
|
|
![]()
Сообщение
#90
|
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Если какого-то из модулей 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/x...fb5ccca2d22b81c 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 Итак, модуль успешно установлен. |
|
|
![]()
Сообщение
#91
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Почитай интересную статейку на эту тему , не далее как вчера чуть-чуть допиливал wmfon, очень помогла: http://asvetlov.blogspot.com/2011/03/subprocess.html Кстати обновленный wmfon в репе, теперь mirage открывается не с пустым окном, а с изображениями из /usr/share/design-current/backgrounds/ посредством команды : pr = subprocess.Popen(['/usr/share/wmfon/mirage','-R','/usr/share/design-current/backgrounds/'], shell=False) в твоем случае наверное: subprocess.call(['cd',' <некий каталог>'], shell=False) Прошёл по ссылке, но у меня не то : я как раз использую строку+shell=True или список+shell=False. Код >>> subprocess.call(['cd','~'], shell=False) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.6/subprocess.py", line 470, in call return Popen(*popenargs, **kwargs).wait() File "/usr/lib/python2.6/subprocess.py", line 623, in __init__ errread, errwrite) File "/usr/lib/python2.6/subprocess.py", line 1141, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory >>> subprocess.call(['cd ~'],shell=True) 0 >>> subprocess.call('pwd', shell=True) / 0 >>> В первом случае ошибка, во втором якобы ОК, а на деле каталог не меняется (Питон в данном случае запущен из / " Причём другие команды (какие запускал), кроме cd, работают ведь нормально. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#92
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Глоб. Модератор Сообщений: 10142 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
to kostyalamer
Костя, ты никогда не пробовал организовать обмен данными между питоновским скриптом и и вызванным из него Xterm'ом? В манах и инете кое-что есть на эту тему, но применить почему-то не получается. Сначала что-то типа Код a = subprocess.Popen('xterm', shell = True, stdin = subprocess.PIPE, stdout=subprocess.PIPE) а потом хоть с communicate(), хоть без него - результата нет. То есть окошко Xterm появляется, но каких-либо признаков контакта его с моим скриптом не могу уловить ![]() -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
![]()
Сообщение
#93
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
to kostyalamer Костя, ты никогда не пробовал организовать обмен данными между питоновским скриптом и и вызванным из него Xterm'ом? В манах и инете кое-что есть на эту тему, но применить почему-то не получается. Сначала что-то типа Код a = subprocess.Popen('xterm', shell = True, stdin = subprocess.PIPE, stdout=subprocess.PIPE) а потом хоть с communicate(), хоть без него - результата нет. То есть окошко Xterm появляется, но каких-либо признаков контакта его с моим скриптом не могу уловить ![]() Делал, правда это было давно: Код f = subprocess.Popen('mplayer -slave -quiet -input file=/tmp/mpinfile cdda://%s' %trk, shell = True, stdout = subprocess.PIPE, stdin = subprocess.PIPE ) print "1home info" n = f.stdout.readline(-1)#MPlayer 29766-4.4.1 (C) 2000-2009 MPlayer Tea print "1-"+ n n = f.stdout.readline(-1)#141 аудио & 305 видео кодеков print "2-"+ n n = f.stdout.readline(-1)#Terminal type `unknown' is not defined. print "3-"+ n n = f.stdout.readline(-1)#Пустая строка print "4-"+ n n = f.stdout.readline(-1)#Воспроизведение cdda://1. print "5-"+ n try: n = f.stdout.readline(-1)#Найден аудио CD с 19 дорожками. здесь ловить ошибку отсутствия диска ! архив с программой в прицепе, погляди там сам что к чему : ![]() |
|
|
![]()
Сообщение
#94
|
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Кстати, на ютубе имеется видеокурс по освоению питона с нуля http://www.youtube.com/watch?v=jMg12k-v75g
А еще питон изучают в Сколково ![]() Сообщение отредактировал and - 21.1.2012, 18:19 |
|
|
![]()
Сообщение
#95
|
|
![]() Крупный специалист ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 476 Регистрация: 30.11.2009 Вставить ник Цитата Пользователь №: 1722 Страна: Россия Город: Климовск/Московской Пол: Муж. Репутация: ![]() ![]() ![]() |
А еще питон изучают в Сколково Потому что хотят сделать кальку с MIT. ![]() ![]() |
|
|
![]()
Сообщение
#96
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Нашел хорошую инфу по Tkinter-у
![]() http://ru.wikiversity.org/wiki/%CA%F3%F0%F...FB%EA%E0_Python Сообщение отредактировал kostyalamer - 2.9.2012, 22:11 |
|
|
![]()
Сообщение
#97
|
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Нашел хорошую инфу по Tkinter-у ![]() Cпасибо, материал интересный. Все-таки жалко, что для tkintera не разработан простой конструктор форм в духе Gambas или visual бейсика. Page все таки немного не то, его код надо существенно править ручками. Еще наткнулся на проект для винды Visual Tkinter Python IDE http://sourceforge.net/projects/visualtkinter/ Судя по роликам с ютуба по задумке это самое то, но по исполнение похоже очень сырое. Официальный сайт не работает, для установки требуется dotnet, На моем компе оно не пошло, на работе половина работает, половина нет, например невозможно сменить имя кнопки - dotnet выбрасывает какой то exception. В общем, увы и ах ![]() |
|
|
![]()
Сообщение
#98
|
|
Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Активный Пользователь Сообщений: 553 Регистрация: 4.2.2016 Вставить ник Цитата Пользователь №: 2850 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Перенесено из темы "Выбор IDE"
Долго ловил книгу на ОЗОНе. Поймал ![]() Теперь грызу Питон по книге ![]()
Прикрепленные файлы
|
|
|
![]()
Сообщение
#99
|
|
Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Активный Пользователь Сообщений: 553 Регистрация: 4.2.2016 Вставить ник Цитата Пользователь №: 2850 Страна: Россия Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Пока не очень понял как работать с кнопками на форме... Тяжко в чужой программе сходу...
|
|
|
![]()
Сообщение
#100
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Пока не очень понял как работать с кнопками на форме... Тяжко в чужой программе сходу... Tkinter осваиваешь или PyQt ? Если tkinter , то вот хороший учебник : http://younglinux.info/tkinter.php , если Qt то это к Ивану ![]() |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.6.2025, 19:57 |