使用python tkinter进行html文件i/o
我有一个web桌面应用程序,它使用XPCOM文件选择器对本地文件系统进行写入和读取,并且在firefox12中可以完美地工作。但是,更高版本的firefox(尤其是当前版本的v17)完全禁用xpcom文件函数的使用使用python tkinter进行html文件i/o,python,firefox,file-io,tkinter,xpcom,Python,Firefox,File Io,Tkinter,Xpcom,我有一个web桌面应用程序,它使用XPCOM文件选择器对本地文件系统进行写入和读取,并且在firefox12中可以完美地工作。但是,更高版本的firefox(尤其是当前版本的v17)完全禁用xpcom文件函数的使用 我考虑将文件请求传递给本地机器上服务器上的python tkinter。我可以在空闲状态下从.py或.cgi文件打开tkinter文件选择器,但是如何使文件对话框显示在应用程序的调用html页面中?我需要这种互动而不离开应用程序的页面。任何想法都值得赞赏。根据I/O的复杂性和频率,您
我考虑将文件请求传递给本地机器上服务器上的python tkinter。我可以在空闲状态下从.py或.cgi文件打开tkinter文件选择器,但是如何使文件对话框显示在应用程序的调用html页面中?我需要这种互动而不离开应用程序的页面。任何想法都值得赞赏。根据I/O的复杂性和频率,您可以将参数发布到python CGI脚本,并将结果返回到JSON对象中 首先,在JS中:
function doIO (data) {
var request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyStatus == 4) {
if (request.status == 200) {
alert('Success!');
var data = JSON.parse(xmlhttp.responseText);
// do something with response data
}
else { alert('Failure'!); }
}
};
request.open("POST", python_cgi, true);
request.send(data);
}
在python中,您需要实现一个CGI脚本来解析数据,找出请求的I/O并执行它。您的python脚本可以如下所示:
import cgi, json, sys
form = cgi.FieldStorage()
command = form.getFirst('command')
if command == "filePicker":
# run tkinter file picker
# build json response object
elif commoand == "myIoCommand":
# do some I/O
# build json response object
print "Status: 200"
print "Content-Type: application/json"
json.dump(response, sys.stdout)
例如,如果您需要一些灵感来构建json响应对象,请参见
如果您需要更频繁/复杂的I/O,那么您可能需要做的是通过更小、更频繁的AJAX调用为应用程序设置一个具有镜像状态的Python服务器。你可以使用一个框架来制作一个RESTful应用程序,或者你也可以通过子类化来实现你自己的应用程序