Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 13, 2011 16:17:59

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

py2exe, убить процесс (откомпиленный)

А я о чем? QWebView сделан на Webkit. Еще на нем работает, например, Safari. Так что AJAX с JQuery запустятся без проблем.
Выйдет все в одном флаконе - и браузер и сайт, который он крутит.



Офлайн

#2 Янв. 13, 2011 16:38:00

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

py2exe, убить процесс (откомпиленный)

Андрей Светлов будем крутить.

Офлайн

#3 Янв. 13, 2011 23:45:06

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

py2exe, убить процесс (откомпиленный)

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

Офлайн

#4 Янв. 14, 2011 10:49:06

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

py2exe, убить процесс (откомпиленный)

А пример простой как два пальца об асфальт:)
Код бровзера:

# -*- coding: utf-8 -*-
import sys

from PyQt4 import QtCore, QtGui
from httpWidget import Ui_HttpWidget

class httpWidget(QtGui.QWidget):
def __init__(self, parent=None):
super(httpWidget, self).__init__(parent)
self.ui = Ui_HttpWidget()
self.ui.setupUi(self)

# set margins
l = self.layout()
l.setMargin(0)
self.ui.horizontalLayout.setMargin(5)

# set the default page
url = 'http://google.pl'
self.ui.url.setText(url)

# load page
self.ui.webView.setUrl(QtCore.QUrl(url))

# history buttons:
self.ui.back.setEnabled(False)
self.ui.next.setEnabled(False)

QtCore.QObject.connect(self.ui.back,QtCore.SIGNAL("clicked()"), self.back)
QtCore.QObject.connect(self.ui.next,QtCore.SIGNAL("clicked()"), self.next)
QtCore.QObject.connect(self.ui.url,QtCore.SIGNAL("returnPressed()"), self.url_changed)
QtCore.QObject.connect(self.ui.webView,QtCore.SIGNAL("linkClicked (const QUrl&)"), self.link_clicked)
QtCore.QObject.connect(self.ui.webView,QtCore.SIGNAL("urlChanged (const QUrl&)"), self.link_clicked)
QtCore.QObject.connect(self.ui.webView,QtCore.SIGNAL("loadProgress (int)"), self.load_progress)
QtCore.QObject.connect(self.ui.webView,QtCore.SIGNAL("titleChanged (const QString&)"), self.title_changed)
QtCore.QObject.connect(self.ui.reload,QtCore.SIGNAL("clicked()"), self.reload_page)
QtCore.QObject.connect(self.ui.stop,QtCore.SIGNAL("clicked()"), self.stop_page)

QtCore.QMetaObject.connectSlotsByName(self)

def url_changed(self):
"""
Url have been changed by user
"""
page = self.ui.webView.page()
history = page.history()
if history.canGoBack():
self.ui.back.setEnabled(True)
else:
self.ui.back.setEnabled(False)
if history.canGoForward():
self.ui.next.setEnabled(True)
else:
self.ui.next.setEnabled(False)

url = self.ui.url.text()
self.ui.webView.setUrl(QtCore.QUrl(url))

def stop_page(self):
"""
Stop loading the page
"""
self.ui.webView.stop()

def title_changed(self, title):
"""
Web page title changed - change the tab name
"""
self.setWindowTitle(title)

def reload_page(self):
"""
Reload the web page
"""
self.ui.webView.setUrl(QtCore.QUrl(self.ui.url.text()))

def link_clicked(self, url):
"""
Update the URL if a link on a web page is clicked
"""
page = self.ui.webView.page()
history = page.history()
if history.canGoBack():
self.ui.back.setEnabled(True)
else:
self.ui.back.setEnabled(False)
if history.canGoForward():
self.ui.next.setEnabled(True)
else:
self.ui.next.setEnabled(False)

self.ui.url.setText(url.toString())

def load_progress(self, load):
"""
Page load progress
"""
if load == 100:
self.ui.stop.setEnabled(False)
else:
self.ui.stop.setEnabled(True)

def back(self):
"""
Back button clicked, go one page back
"""
page = self.ui.webView.page()
history = page.history()
history.back()
if history.canGoBack():
self.ui.back.setEnabled(True)
else:
self.ui.back.setEnabled(False)

def next(self):
"""
Next button clicked, go to next page
"""
page = self.ui.webView.page()
history = page.history()
history.forward()
if history.canGoForward():
self.ui.next.setEnabled(True)
else:
self.ui.next.setEnabled(False)

if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = httpWidget()
myapp.show()
sys.exit(app.exec_())
код как запустить ботловский вебсервер:
читаем тут
А прозакритии окна убиваем субпроцесс.
Занавес закрывается, фанфары.

Офлайн

#5 Янв. 14, 2011 13:25:22

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

py2exe, убить процесс (откомпиленный)

Фанфары откладываются.
Объясни, зачем тебе запускать субпроцесс для bottle web server?

Отчего нельзя всё в одном процессе?
Это же гораздо удобней.
И надежней, помимо всего прочего - раз уж прога “слетела”, то вся и целиком.
Помнится, для стабильного взаимодействия нескольких процессов приходилось прикладывать ряд неочевидных усилий.



Офлайн

#6 Янв. 14, 2011 14:57:20

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

py2exe, убить процесс (откомпиленный)

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

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version