Вверх ↑
Этот топик читают: Гость
Администрация
Ответов: 15294
Рейтинг: 1515
#286: 2010-09-20 15:01:57 ЛС | профиль | цитата
это зависит от того, какие либы используются скриптом.
карма: 26
0
Ответов: 5446
Рейтинг: 323
#287: 2010-09-27 05:07:40 ЛС | профиль | цитата
Небольшое обновление пакета на SVN:
1. Поправлен компонент SMTP
2. Компоненты для обрпботки исключений вынесены на отдельную вкладку

Сегодня обнаружил, что под Windows 7 мой конвертер кодировки не работает Пришлось взять на вооружение менее самопальный инструмент, а именно: портированную из *nix-мира утилиту iconv. Офсайт порта: Win-iconv. Для целей этого проекта пришлось немного подправить исходник (полный набор файлов для компиляции прилагается).

А чтобы не утруждать всех компиляцией, прикладываю готовый набор (exe+dll, положить в %hiasm%compiler). Для использования надо поменять исполняемый файл для PyCode на iconv.exe, а командную строку - на
-f CP1251 -t UTF8 -o "%oname%" "%fname%"
карма: 1

0
файлы: 2win-iconv-0.0.1.rar [53.6KB] [188], py_iconv_cc.zip [21.1KB] [252]
Ответов: 1891
Рейтинг: 110
#288: 2010-10-03 00:36:20 ЛС | профиль | цитата
Iuan N73 писал(а):
скрипты на этом языке созданные этим пакетом будут работать на смарте на котором установлен питон? именно скрипты .py


Если установить портированную версию Python для смартфона - должны работать, но все зависит от того насколько разработчики портировали сам Python для конкретного устройства, а также от самого устройства и функций поддерживаемых им. У меня, например, после установки Python for Windows CE (PythonCE.WM.CAB) работают скрипты .py по доступу к базе данных SQLite, написанные в пакете Python, на Windows Mobile 6 Pro


карма: 0
%time%
0
Ответов: 5446
Рейтинг: 323
#289: 2010-10-04 09:24:37 ЛС | профиль | цитата
Iuan N73, часть скриптов может даже заработать на устройствах с ОС Android после установки SL4A (Python for Android). Если бы над этим проектом работал не я один, то можно было бы создать новый тип приложений - скрпиты для Android.

На днях выпущу микрообовление (работа с датой-временем), а потом начну делать компоненты для GUI. Напоминаю: GUI будет на основе Tkinter + PMW.

Стиль программирования GUI в Python-е отличается от привычного по другим пакетам: в рекомендуемом менеджере геометрии (Pack) нет возможности прямо указать координаты элемента, и контроль над размером (по умолчанию) тоже отсутствует. Вместо этого используется "упаковка" элементов: программист указывает, к какой стороне контейнера "прилепить" очередной элемент, и как этот элемент должен себя вести: заполнить ли всё имеющееся место или нет, растягиваться вместе с контейнером или нет (что-то наподобие HBoxLayout, VBoxLayout). Считается, что этого достаточно в 90% случаев.

Для остальных есть возможность использовать другие менеджеры геометрии: решётка (аналог GridLayout пакета Delphi) либо помещать компоненты строго по координатам (Place). Смешивать разные менеджеры в пределах одного контейнера сродни самоубийству: Python будет просчитывать расположение элементов до морковкиного заговения (или до греческих календ, смотря что раньше наступит ).


карма: 1

0
Главный модератор
Ответов: 2947
Рейтинг: 388
#290: 2010-10-04 10:47:08 ЛС | профиль | цитата
WSO & Python

WSO писал(а):

Интерпретатор языка и стандартные библиотеки свободно и бесплатно доступны как в бинарной форме, так и в виде исходных кодов на сайте http://www.python.org.
ActiveState предоставляет ActivePython - реализацию интерпретатора для Windows, которая доступна на сайте http://www.activestate.com, и имеет поддержку COM, необходимую для использования WSO. Для полного взаимодействия с WSO написан небольшой модуль wso.py, в котором описана процедура getref для получения ссылок на процедуры и передачи их в WSO.

Примеры на этом языке тестировались на версии ActivePython 2.3.

Модуль wso.py подключается например следующим образом:


from wso import *

или


import wso

при использовании первого варианта все имена модуля добавляются к текущему пространству имен, и для доступа к процедуре getref не требуется указывать имя модуля. Во втором случае для доступа к процедуре getref требуется указывать имя модуля в виде: wso.getref. Более подробно о подключении модулей можно прочитать в документации Python.

Для использования wso нужно подключить модули поддержки COM. Это делается в модуле wso.py (таким образом, если используется этот модуль их можно отдельно не подключать) следующим образом:


import pythoncom
import win32com.client

дополнительно можно подключить модуль WSOConsts, в котором объявлены константы.

Создание объекта WindowSystemObject осуществляется например так:


o = win32com.client.Dispatch("Scripting.WindowSystemObject")

Задание обработчиков событий с использованием модуля wso осуществляется через второй или третий уровень с использованием процедуры getref, например:


def OnMouseUp (sender,x,y,button,flags):
sender.Form.MessageBox("OnMouseUp")

form.OnMouseMove = getref(OnMouseUp)



Заметки:
требуется указывать точно все параметры в обработчике событий или указывать некоторые первые из них и далее *arg, например
def OnMouseUp (sender,x,y,*arg):
sender.Form.MessageBox("OnMouseUp")

Примеры на языке Python находятся в каталоге WSO в подкаталоге DemoPython. Один из примеров:


#WindowSystemObject (WSO) example
#Copyright (C) Veretennikov A. B. 2004

from wso import *
from wsosamples import *

o = win32com.client.Dispatch("Scripting.WindowSystemObject")

f = o.CreateForm(0,0,650,400)
f.CenterControl()

def MouseMove(sender,x,y,flags):
sender.Form.StatusBar[0].Text = str(x)+" x "+str(y)

def MouseExit(sender):
sender.Form.StatusBar[0].Text = "No Mouse In Control"

def MouseUp(sender,x,y,button,flags):
sender.Form.MessageBox("MouseUp "+str(x)+" x "+str(y)+", Button = "+str(button));

def KeyDown(sender,key,flags):
if (key != 27) and (key != 112): sender.Form.MessageBox("KeyDown "+str(key))

def ButtonClick(sender):
sender.Form.MessageBox("Button "+sender.text+": OnClick")

def CloseFormHandler(sender):
sender.Form.Close()

CanCloseVar = 1

def OKResult(sender):
global CanCloseVar
CanCloseVar = 1
sender.Form.Close()

def HelpAbout(sender):
AboutWSO(sender,"Event Handler Sample")

def CanClose(sender,resultptr):
global CanCloseVar
CanCloseVar = 0
j = f.CreateDialogForm(0,0,510,100)
j.CenterControl()
j.TextOut(10,10,"Do you really want to quit this program?")
x = j.CreateButton(10,30,75,25,"Yes")
x.OnClick = getref(OKResult)
x.Default = 1
x = j.CreateButton(90,30,75,25,"No")
x.OnClick = getref(CloseFormHandler)
x.Cancel = 1
x = j.CreateButton(170,30,75,25,"Help")
x.OnClick = getref(HelpAbout)
j.HelpButton = x
j.Color = 0xFF00FF
j.ShowModal()
j.Destroy()
resultptr.Put(CanCloseVar)

Button = f.CreateButton(10,10,75,25,"Demo")

Button.AddEventHandler("OnClick",getref(ButtonClick))

CancelButton = f.CreateButton(100,10,75,25,"Close")
CancelButton.OnClick = getref(CloseFormHandler)

f.CreateStatusBar().Name = "StatusBar"
f.StatusBar.Add(100).AutoSize = 1
f.OnMouseMove = getref(MouseMove)
f.OnMouseLeave = getref(MouseExit)
f.OnMouseUp = getref(MouseUp)
f.OnKeyDown = getref(KeyDown)
f.OnCloseQuery = getref(CanClose)

x = f.TextOut(10,60,"WindowSystemObject")
x.Font.Size = 16
x.Color = 255
x.Font.Bold = 1
f.TextOut(10,100,"This sample shows how to handle events from WindowsSystemObject using Python.x0Dx0DClicking any mouse button invokes OnMouseUp event handler.x0Dx0DMoving mouse inside this window invokes OnMouseMove event handler.x0Dx0D(The current mouse position is displayed in the status bar)x0Dx0DMoving mouse outside this window invokes OnMouseLeave event handler.x0Dx0DClicking Demo or Close buttons invokes OnClick event handler.x0Dx0DPressing any key invokes OnKeyDown event handler.x0Dx0DTry to close this window to invoke OnCloseQuery event.")

x = f.Menu.Add("File")
x.Add("Exit",27).OnExecute = getref(CloseFormHandler)
x = f.Menu.Add("Help")
x.Add("About","F1").OnExecute = getref(HelpAbout)

f.Show()

o.Run()

карма: 7
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 1891
Рейтинг: 110
#291: 2010-10-04 14:05:33 ЛС | профиль | цитата
iarspider писал(а):
Iuan N73, часть скриптов может даже заработать на устройствах с ОС Android после установки SL4A (Python for Android).


Вот тут есть пример
------------ Дoбавленo в 14.05:
Кстати, если кому нужно у меня есть скомпилированная библиотека sqlite 3.7.2, которая работает на Python for Windows CE
карма: 0
%time%
0
Ответов: 5446
Рейтинг: 323
#292: 2010-10-04 20:30:46 ЛС | профиль | цитата
Nic, нэ кошерно кроссплатформено Плюс я пользуюсь не ActiveState-овской версией, а оффициальной, а там библиотеки WSO нема. Но запрещать делать компоненты для WSO не буду.

Можно ещё использовать пакет pywin32, там есть возможность делать GUI из "родных" компонентов, но это опять не кроссплатформеное решение.

Можно взять wxPython или pyQT, и для них наклепать компоненты.

Можно вообще в экзотику уйти, в том числе в область псевдографических (консольных, curses) интерфейсов.

Но я для себя уже решил, что буду на Tkinter-е делать.
------------ Дoбавленo в 20.30:
Alexbootch, всё верно. Кстати, раншье этот проект звался ASE (Android Scripting Environment).
карма: 1

0
Ответов: 1891
Рейтинг: 110
#293: 2010-10-04 20:56:04 ЛС | профиль | цитата
iarspider писал(а):
Но я для себя уже решил, что буду на Tkinter-е делать.


iarspider, у Вас есть какая-либо литература по Tkinter? Желательно на русском
карма: 0
%time%
0
Ответов: 5446
Рейтинг: 323
#294: 2010-10-05 00:14:09 ЛС | профиль | цитата
Alexbootch, На русском - нет. На английском - сколько угодно плюс весь Интернет...
------------ Дoбавленo в 00.14:
И ждет своего часа 300-страничный труд "Python and Tkinter programming", честно купленный у издателя.
карма: 1

0
Ответов: 1891
Рейтинг: 110
#295: 2010-10-05 00:56:01 ЛС | профиль | цитата
iarspider писал(а):
Alexbootch, На русском - нет


iarspider, да я и не надеялся на то что будет на русском

iarspider писал(а):
Но я для себя уже решил, что буду на Tkinter-е делать.


Можно будет как на ББ запускать, так и на устройстве WM. Я подключил Tkinter к Python for Windows CE и проверил пару стандартных примеров - запускается как на ББ, так и на устройстве WM, так что возможно часть схем собранных в пакете Python будут работать и на других устройствах, для которых портирован Python и Tkinter
карма: 0
%time%
0
Ответов: 5446
Рейтинг: 323
#296: 2010-10-08 06:03:56 ЛС | профиль | цитата
На SVN отправился набор компонентов для работы с датой и временем. Элемент Math подправлен для работы с этими типами.

Взаимоотношения между двума основными типами (DateTime и TimeDelta) таковы:

  • datetime2 = datetime1 + timedelta
  • datetime2 = datetime1 - timedelta
  • timedelta = datetime1 - datetime2
  • timedelta1 = timedelta2 + timedelta3
  • timedelta1 = timedelta2 - timedelta3
  • timedelta1 = timedelta2 * integer
  • timedelta1 = timedelta2 / integer (integer != 0)

Прямого метода превращения Time в DateTime и обратно пока нет, но будет в одном из следующих релизов.
Для любопытных документация по модулю datetime.
карма: 1

0
Ответов: 5446
Рейтинг: 323
#297: 2010-10-19 00:13:14 ЛС | профиль | цитата
Микро-пакет компонентов для построения GUI с помощью Tkinter ушёл на SVN. В этом релизе только два компонента - кнопка и текстовое поле. Остальные элементы будут созданы позже.
Сейчас буду изучать работу типов Font и Color.
------------ Дoбавленo в 11.01:
С цветом всё примерно понятно (число, BBGGRR).

А вот что с шрифтом делать пока непонятно: как "MS Sans Serif80126322561" привести к человеческому виду (хоть бы на части разбить: имя, начертание, цвет).
------------ Дoбавленo в 00.13:
Так, вроде понял: свойство Font - это массив
[семейство, размер, начертание (З)ачёркнутый, (П)одчёркнутый, (К)урсив, полу(Ж)ирный <битовое поле: ЗПКЖ>, кодовая страница/набор символов].
карма: 1

0
Ответов: 5446
Рейтинг: 323
#298: 2010-10-21 05:43:29 ЛС | профиль | цитата
На SVN доступно обновление (всех GUI-) компонентов:

  • Добавлены свойства "цвет" (7 штук для кнопки, 5 - для текстового поля).
  • Добавлено свойство "Шрифт".
  • Исправлены события onRMouse, onMMouse.
карма: 1

0
Ответов: 1891
Рейтинг: 110
#299: 2010-10-21 12:00:26 ЛС | профиль | цитата
iarspider, а редактор формы будет?
карма: 0
%time%
0
Ответов: 5446
Рейтинг: 323
#300: 2010-10-26 13:24:21 ЛС | профиль | цитата
Alexbootch, пока нет в планах. При использовании того способа расстановки, какой сейчас используется (менеджер геометрии Pack) редактор форм бесполезен. Если всё же решу перейти на Place, тогда и редактор можно будет сделать (или использовать "штатный")

На SVN доступен новый компонент - Random (генератор псевдослучайных последовательностей).
карма: 1

2
Голосовали:Астрамак, Alexbootch
Сообщение
...
Прикрепленные файлы
(файлы не залиты)