QtWebKit中的JavaScript和异步方法
我正在基于以下内容开发桌面软件:QtWebKit中的JavaScript和异步方法,javascript,python,angularjs,multithreading,qt,Javascript,Python,Angularjs,Multithreading,Qt,我正在基于以下内容开发桌面软件: Python:PySide(WebKit) JavaScript:AngularJS 现在,我需要实现异步功能: 当从FTP(Python部分)上传图像时,我需要在UI(HTML+JS)上显示一些上传程序 需要您对优雅解决方案的建议 非常简单的解决方案: 在Python字典中保存一些标志 计时器在JS中对此标志的请求值:) 然而,我需要硬编码的时间,一旦我有长期的操作,如下载文件从FTP,它的问题为我 解决方案的代码: templateManager.j
- Python:PySide(WebKit)
- JavaScript:AngularJS
- 当从FTP(Python部分)上传图像时,我需要在UI(HTML+JS)上显示一些上传程序
function _loadNewTemplates() {
var deferred = $.Deferred();
asyncManager.run($.proxy( _loadNewTemplatesCallback, null, deferred ), "get_new_templates_list" );
return deferred;
}
function _loadNewTemplatesCallback ( deferred, response ) {
template.newList = response.result;
deferred.resolve();
}
app\u mamager.py
@QtCore.Slot(int, result=str)
def get_new_templates_list(self, id):
thread.start_new_thread(get_new_templates_list,
(id,))
def get_new_templates_list(id):
config.set_response(id, json.dumps({'result': _get_new_templates_list(), 'error': None}, MyEncoder))
def _get_new_templates_list():
request = {'category': PRODUCT_CODE}
response = requests.post(URL,
data=request,
headers=HEADERS)
return json.loads(response.text)
def set_response(id, request):
'''
Put pair (id, request) to the internal dictionary
:param id - int, request id:
:param request - string, request string:
:return:
'''
global _async_request
_async_request[id] = request
def get_response(id):
'''
Returns request or empty string if request does not exist
:param id - int
:return - string, request string:
'''
global _async_request
if _async_request.has_key(id):
return _async_request.pop(id)
else:
return ''
utils.py
@QtCore.Slot(int, result=str)
def get_new_templates_list(self, id):
thread.start_new_thread(get_new_templates_list,
(id,))
def get_new_templates_list(id):
config.set_response(id, json.dumps({'result': _get_new_templates_list(), 'error': None}, MyEncoder))
def _get_new_templates_list():
request = {'category': PRODUCT_CODE}
response = requests.post(URL,
data=request,
headers=HEADERS)
return json.loads(response.text)
def set_response(id, request):
'''
Put pair (id, request) to the internal dictionary
:param id - int, request id:
:param request - string, request string:
:return:
'''
global _async_request
_async_request[id] = request
def get_response(id):
'''
Returns request or empty string if request does not exist
:param id - int
:return - string, request string:
'''
global _async_request
if _async_request.has_key(id):
return _async_request.pop(id)
else:
return ''
config.py
@QtCore.Slot(int, result=str)
def get_new_templates_list(self, id):
thread.start_new_thread(get_new_templates_list,
(id,))
def get_new_templates_list(id):
config.set_response(id, json.dumps({'result': _get_new_templates_list(), 'error': None}, MyEncoder))
def _get_new_templates_list():
request = {'category': PRODUCT_CODE}
response = requests.post(URL,
data=request,
headers=HEADERS)
return json.loads(response.text)
def set_response(id, request):
'''
Put pair (id, request) to the internal dictionary
:param id - int, request id:
:param request - string, request string:
:return:
'''
global _async_request
_async_request[id] = request
def get_response(id):
'''
Returns request or empty string if request does not exist
:param id - int
:return - string, request string:
'''
global _async_request
if _async_request.has_key(id):
return _async_request.pop(id)
else:
return ''
以下是您可以做的:
stat
/stat.ST\u size
检索文件大小PySide.QtGui.QProgressBar.setValue()相应地增加进度条
问题中没有任何部分表明您已尝试编写代码-是否看到任何更新?我对解决同样的问题感兴趣。我可以使用simple loader.gif,但没有任何进展,我正在寻找在JS和Python之间以异步模式进行通信的最佳灵活解决方案。因为我认为(也许我错了)我上面的方法没有我需要的那么好。