Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python tkinter进行html文件i/o_Python_Firefox_File Io_Tkinter_Xpcom - Fatal编程技术网

使用python tkinter进行html文件i/o

使用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的复杂性和频率,您

我有一个web桌面应用程序,它使用XPCOM文件选择器对本地文件系统进行写入和读取,并且在firefox12中可以完美地工作。但是,更高版本的firefox(尤其是当前版本的v17)完全禁用xpcom文件函数的使用


我考虑将文件请求传递给本地机器上服务器上的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应用程序,或者你也可以通过子类化来实现你自己的应用程序