2015-03-10 17 views
5

LED'leri kontrol eden bir Python tabanlı uygulamam var. Bir web sunucusu oluşturmak için Flask kullanır, böylece HTML, CSS ve JS kullanarak güzel bir kullanıcı arayüzü ile çalışabilirim.node-webkit startup üzerindeki python komut dosyasını çalıştırın (nw.js)

Benim şu anki süreç:

  1. python home.py
  2. tarayıcıda localhost:5000 için
  3. kar gezinmek!
Ben bir adım daha ileri götürün ve bir nw.js (eski node-webkit) uygulaması olarak paketlemek istiyorum

.

Temelde, ben sadece benim denenmiş ve gerçek şişesi web sunucusu başladı ve açılacak şekilde nw.js uygulama arabirimi için bir localhost:5000 sayfası oluşturur, böylece pencere yüklenmeden önce benim python komut dosyası çalıştırmak gerekir inanıyoruz.

nw.js uygulamamı nasıl paketleyebilirim, böylece başlangıçta bir python betiği çalıştırabilir mi?

+0

Basitçe 'Bu uygulama pencereleri yükler –

cevap

3

Web sunucusu başlatıldıktan sonra bir yükleme sayfası oluşturabilir ve gerçek uygulamayı oluşturabilirsiniz.

package.json:

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

yükleme sayfası (loading.html) gizli bir pencere olarak gerçek uygulama sayfasını başlattı bir js dosyası yükleyecek ve daha sonra sunucu gösterebilirim çalışıyor.

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 
 
    }); 
 
});

Neyse bu özü, ancak belirli kurulum için değişiklik yapmak gerekebilir. Umarım yardımcı olur.

+0

subprocess.Popen' aracılığıyla piton komut düğüm-webkit önyüz başlatmak ancak python betiğini çalıştırıyor gibi görünmüyor. Neyi kaçırıyorum? – Prinsig

0

Düğümün child_process modülünü kullanın ve bunu index.html dosyasından arayın.

şey gibi:

<!DOCTYPE html> 
<html> 
    <head> 

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

(Kod test edilmedi, sadece örnek)

İlgili konular