2012-11-24 35 views
5

Tôi đang gặp phải hành vi khác nhau trên cùng một mã bằng bảng điều khiển python và tập lệnh python.Hành vi khác nhau giữa giao diện điều khiển python và tập lệnh python

Mã này là như sau:

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

Khi chạy mã trong python console, đầu ra là một khung mới có chứa trang chính google.

Khi chạy mã dưới dạng tập lệnh, kết quả là một khung trống. Nó đóng rất nhanh nhưng ngay cả khi tôi sử dụng chức năng trì hoãn, webkit vẫn chưa được thêm vào khung.

Làm cách nào có thể?

Hơn nữa, sử dụng PyDev IDE, nó gắn cờ: "nhập chưa được giải quyết: gtk", nhưng nếu tôi chạy dự án, chương trình sẽ bắt đầu mà không gặp vấn đề biên dịch. nó có bình thường không?

Trả lời

8

Thêm

gtk.main() 

đến hết kịch bản của bạn. Điều này bắt đầu vòng lặp sự kiện 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 nó làm việc! cảm ơn bạn, có bạn có bất kỳ ý tưởng về lý do tại sao pydev không nhận ra thư viện gtk nhưng nó biên dịch không? – Luca

+0

Xin lỗi, tôi không có kinh nghiệm với pydev. – unutbu

+0

@PhantomFav Bạn có thể [** chấp nhận câu trả lời **] (http://meta.stackexchange.com/a/5235/164313) vì nó hoạt động cho bạn. – phant0m

1

Đoán của tôi là bàn điều khiển giữ phiên python mở, trong khi ở cuối tập lệnh chương trình đóng. Khi kịch bản đóng, nó sẽ lấy mọi thứ nó tạo ra.

Điều gì đó để kiểm tra lý thuyết này: nếu bạn nhập "thoát" trong bảng điều khiển, bạn có thấy giao diện bị tắt theo cách tương tự không? Nếu có, hãy suy nghĩ về một số mã (ví dụ: tạm dừng như raw_input) sẽ cho phép tập lệnh ở trạng thái mở.

Chúc may mắn!

+0

ok, tôi đã chỉ cần cố gắng, và chờ đợi thời điểm thích hợp một cửa sổ pop up sẽ xuất hiện: metacity: không có phản hồi từ ứng dụng – Luca

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