2015-03-10 17 views
5

Tôi có một ứng dụng dựa trên Python điều khiển đèn LED. Nó sử dụng Flask để tạo máy chủ web để tôi có thể làm việc với giao diện người dùng đẹp bằng HTML, CSS và JS.Chạy tập lệnh python khi khởi động nút-webkit (nw.js)

quá trình hiện tại của tôi:

  1. python home.py
  2. điều hướng đến localhost:5000 trong trình duyệt
  3. lợi nhuận!

Tôi muốn tiến thêm một bước nữa và gói nó thành ứng dụng nw.js (trước đây là node-webkit). Về cơ bản, tôi tin rằng tôi chỉ cần thực thi kịch bản python trước khi tải cửa sổ, do đó máy chủ web cố định và đúng của tôi khởi động và tạo một trang localhost:5000 cho giao diện ứng dụng nw.js của tôi để mở ra.

Tôi có thể đóng gói ứng dụng nw.js của mình như thế nào để chạy tập lệnh python khi khởi động?

+0

Đơn giản chỉ cần khởi động frontend nút-webkit từ kịch bản python qua 'subprocess.Popen' –

Trả lời

3

Bạn có thể tạo trang tải và hiển thị ứng dụng thực tế sau khi máy chủ web đã bắt đầu.

package.json:

{ 
 
    "name": "pythonApp", 
 
    "version": "0.0.0", 
 
    "main": "loading.html", 
 
    "window": { 
 
    "title": "App Name", 
 
    "width": 800, 
 
    "height": 600, 
 
    "position": "center", 
 
    } 
 
}

Trang tải (loading.html) sẽ được tải một file js mà ra mắt trang ứng dụng thực tế của bạn như một cửa sổ ẩn và sau đó bạn có thể hiển thị nó khi máy chủ đang chạy.

loading.html:

var gui = require('nw.gui'); 
 

 
var currentWindow = gui.Window.get(); // Get reference to loading.html 
 

 
var exec = require('child_process').execFile; 
 
exec('home.py', {cwd:'.'}, function (error, stdout, stderr){ // Runs your python code 
 
    var appWindow = gui.Window.open('app.html', // Starts your application 
 
    { width: 800, 
 
     height: 600, 
 
     position: 'center', 
 
     focus: false, 
 
     transparent: true // This hides the application window 
 
    } 
 
); 
 
appWindow.on('loaded', function() { // Waits for application to be loaded 
 
    currentWindow.close({force: 'true'}); // Closes loading.html 
 
    appWindow.show(); // Shows app.html 
 
    appWindow.focus(); // Set the focus on app.html 
 
    }); 
 
});

Dù sao đó là ý chính của nó, nhưng bạn có thể cần phải thực hiện thay đổi cho các thiết lập cụ thể của bạn. Hy vọng nó giúp.

+0

này nạp các cửa sổ ứng dụng, nhưng dường như không chạy kịch bản python. Tôi đang thiếu gì? – Prinsig

0

Sử dụng mô-đun child_process của nút và gọi từ index.html.

Cái gì như:

<!DOCTYPE html> 
<html> 
    <head> 

    </head> 
    <body> 
    <script> 
     var child_process= require('child_process'); 
     child_process.spawn('python home.py'); 
    </script> 
    </body> 
</html> 

(Mã không được kiểm tra, ví dụ duy nhất)

Các vấn đề liên quan