2012-11-24 10 views
5

Sto riscontrando un comportamento diverso sullo stesso codice utilizzando la console python e uno script python.Comportamento diverso tra console python e script python

Il codice è il seguente:

import gtk 
import webkit 
win = gtk.Window() 
win.show() 
web = webkit.WebView() 
win.add(web) 
web.show() 
web.open("http://www.google.com") 

Quando si esegue il codice nella console python, l'uscita è una nuova cornice che contiene la pagina principale di Google.

Quando si esegue il codice come script, il risultato è un frame vuoto. Si chiude molto velocemente ma anche se utilizzo una funzione di ritardo, il webkit non viene aggiunto al frame.

Com'è possibile?

Inoltre, utilizzando PyDev IDE contrassegna: "importazione non risolta: gtk", ma se eseguo il progetto, il programma si avvia senza problemi di compilazione. è normale?

risposta

8

Aggiungere

gtk.main() 

alla fine dello script. Ciò avvia il ciclo degli eventi gtk.


import gtk 
import webkit 

class App(object): 
    def __init__(self): 
     win = gtk.Window() 
     win.connect("destroy", self.destroy) 
     web = webkit.WebView() 
     web.open("http://www.google.com") 
     win.add(web) 
     web.show() 
     win.show() 
    def destroy(self, widget, data = None): 
     gtk.main_quit() 
app = App() 
gtk.main() 
+0

: D ha funzionato! grazie, hai qualche idea del perché pydev non riconosce la libreria gtk ma lo compilerà comunque? – Luca

+0

Siamo spiacenti, non ho esperienza con pydev. – unutbu

+0

@PhantomFav Puoi [** accettare la risposta **] (http://meta.stackexchange.com/a/5235/164313) poiché ha funzionato per te. – phant0m

1

La mia ipotesi è che la console mantenga aperta la sessione python, mentre alla fine dello script il programma si chiude. Quando lo script si chiude, prende tutto ciò che ha creato con esso.

Qualcosa per testare questa teoria: se si digita "exit" nella console, l'interfaccia si spegne nello stesso modo? In tal caso, pensa ad un codice (ad esempio una pausa come lo raw_input) che consentirà allo script di rimanere aperto.

Buona fortuna!

+0

ok, ho appena provato, e in attesa del momento giusto apparirà un pop up: Metacity: nessuna risposta dall'applicazione – Luca

Problemi correlati