Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хтмл-интерфейс для програм на питоне 
:(
    Опции темы
kulibinka
Дата 10.6.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Есть скрипт на питоне. К нему нужно приделать интерфейс. 

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

Это сообщение отредактировал(а) kulibinka - 10.6.2007, 15:40
PM MAIL   Вверх
cherep
Дата 10.6.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 11.1.2006
Где: Москва

Репутация: 1
Всего: 4



Очевидно, как. Использовать серверную часть, будь-то CGI, WSGI, какой-нибудь фреймворк (Django, TG, ...). Именно для того оно и придумано, по большому счету.
PM MAIL WWW ICQ   Вверх
kulibinka
Дата 10.6.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Да в том то и дело что я без серверной части хочу обойтись. Т.е. просто есть скрипт, и есть страничка с которой я смогу сделать запуск этого скрипта...

Уверен что есть  простой способ на html-страницы  кликом выполнить запуск любой программы - это первый шаг к решению...
PM MAIL   Вверх
pythonwin
Дата 10.6.2007, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(kulibinka @  10.6.2007,  22:45 Найти цитируемый пост)
Уверен что есть  простой способ на html-страницы  кликом выполнить запуск любой программы - это первый шаг к решению... 

хотел бы увидеть этот способ smile

PM WWW GTalk Jabber   Вверх
kulibinka
Дата 10.6.2007, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Ну, для того чтобы этот способ увидеть я и создал этот пост smile
(хотя думаю, ответ лежит не в питонной, а в какой-то явоскриптовой области)
PM MAIL   Вверх
pythonwin
Дата 10.6.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(kulibinka @  10.6.2007,  23:35 Найти цитируемый пост)
(хотя думаю, ответ лежит не в питонной, а в какой-то явоскриптовой области) 

вроде серверная часть js позволяет это делать, но это тоже будет серверная часть smile
на клиентской части js это не сделать...
думаю лучше постать что-то питоновское на сервер и не изобретать велосипед smile
PM WWW GTalk Jabber   Вверх
kulibinka
Дата 11.6.2007, 05:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Вот тут http://forum.vingrad.ru/forum/topic-77129/...y1164376/0.html нашел схожую тему - говорят что все можно...
Жду ответа на вопрос "как" smile
PM MAIL   Вверх
setq
Дата 11.6.2007, 10:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Модератор:  Если хотите, перенесу тему в Javascript.
  Вверх
kulibinka
Дата 12.6.2007, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Цитата(setq @  11.6.2007,  10:32 Найти цитируемый пост)
Если хотите, перенесу тему в Javascript. 

Если Вам тоже кажется что ответ там вылезет - перенесите пожалуйста.
PM MAIL   Вверх
Ulysses4j
Дата 12.6.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 6.6.2007
Где: Ростов-на-Дону

Репутация: 3
Всего: 10



HTML и Javascript ничего запускать не умеют. Запускать программы на выполнение могут ActiveX объекты, которые работают только в IE, и Java-апплеты, которые кроссбраузерны. Но и это не является их профилем, чтобы добиться такой фунциональности нужно ими весьма искуссно владеть. А вы пытаетесь изобрести велосипед под названием web-сервер. То что вы описали - это ровно его функциональность.


--------------------
Communication is critical to the job of a programmer.
C. Jazdzewski. Fatherly Advice To New Programmers
PM MAIL WWW   Вверх
astoon
Дата 12.6.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 27.11.2006
Где: Екатеринбург

Репутация: 1
Всего: 1



Если не использовать существующие вэб-серверы, тогда нужно писать свой smile.
То есть добавить к Вашему скрипту небольшой модуль с циклом: слушать сокет - обработать запрос - ответить/или закончить.
На обработку запроса - пара-тройка функций, разбирающих запросы, скажем, в кортеж из двух словарей: один - параметры GET, второй - остальные из заголовка.
Что-то примерно так:
Код

# func - это main Вашего скрипта, принимающий в качестве аргументов HTTP-запросы и возвращающий ответы.
 def Server(func, port='33333', host='127.0.0.1'):
    srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    srv.bind((host, port))
    srv.listen(1)

    while True:
        sock, addr = srv.accept()
        data = sock.recv(1024)
        rez, directiva = func(Parser(data)) # разборщик и основной скрипт

        # закончить работу
        if directiva == 'quit':
            sock.close()
            break

        # ответить и закончить
        if directiva == 'bye':
            sock.send(rez)
            sock.close()
            break

        # ответить и слушать далее
        if directiva == 'continue':
            sock.send(rez)
            sock.close()
def Parser(data):
      (разбирает запрос в удобные для Вашего скрипта два словаря и возвращает его)


Запускаем приложение, вызывая код такого типа:
Код

import server # самописный сервер
import app # ваш скрипт
import os

syscall = os.system('firefox 127.0.0.1:33333 &') # в Unix
server.Server(app.main, 33333) # пока файрфокс будет запускаться, сервер уже готов слушать-оствечать.


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

Поправьте, если где не прав.

ЗЫ. А вообще есть готовые мини-серверы на Питоне, на форуме где-то были ссылки.
PM MAIL WWW GTalk   Вверх
Void
Дата 12.6.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 10
Всего: 173



Я, кажется, понял. Вам нужен встроенный HTML-рендерер, что-то вроде HTMLayout. К сожалению, насколько мне известно, это единственная пригодная для построения GUI библиотека такого рода, и обёрток для Питона к ней не наблюдается.

Цитата(astoon @  12.6.2007,  14:36 Найти цитируемый пост)
А вообще есть готовые мини-серверы на Питоне, на форуме где-то были ссылки. 

Конечно есть. Модули BaseHTTPServer, SimpleHTTPServer, wsgiref.simple_server в стандартной поставке.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Ulysses4j
Дата 12.6.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 6.6.2007
Где: Ростов-на-Дону

Репутация: 3
Всего: 10



Цитата(Void @  12.6.2007,  17:45 Найти цитируемый пост)
HTMLayout

Ну да, вместо эмуляции веб-сервера предлагается воспользоваться эмуляцией браузера. Интересно, конечно...

Цитата(pythonwin @  10.6.2007,  23:07 Найти цитируемый пост)
 серверная часть js

Ох и много бы я отдал, чтобы посмотреть на "серверную часть" JS...


--------------------
Communication is critical to the job of a programmer.
C. Jazdzewski. Fatherly Advice To New Programmers
PM MAIL WWW   Вверх
pythonwin
Дата 12.6.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(Ulysses4j @  12.6.2007,  19:54 Найти цитируемый пост)
Ох и много бы я отдал, чтобы посмотреть на "серверную часть" JS... 

она платная и вроде дорогая - можешь спросить в разделе по JS
PS для адмимнистрации - думаю лучше перенести тему в раздел python-web
PM WWW GTalk Jabber   Вверх
dvska
  Дата 20.6.2007, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 30.1.2006

Репутация: 6
Всего: 9



Да-да, как уже описали astoon и Void, никакого Javascript'а не нужно, а нужно запущать прогу из-под простейшего web-сервера (web.py, wsgiref.simple_server, quixote, cherrypy ....). Олег Бройтман даже, помнится, в еxe-шники это всё заворачивал с помощью py2exe..
--------------------
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0917 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.