Tôi hơi bối rối với một số khái niệm gtk và gnome. Tôi đang cố gắng để có được danh sách các cửa sổ không thu nhỏ trên máy tính để bàn gnome2 của tôi, nhưng sau khi đọc tài liệu pygtk và kiểm tra kết quả, tôi không thể hiểu được kết quả.Làm cách nào để có danh sách tất cả các cửa sổ trên máy tính để bàn gnome2 của tôi bằng pygtk?
Không một trong hai đoạn dưới đây có vẻ hoạt động.
Đầu tiên tôi đã cố gắng này ..
>>> gtk.gdk.window_get_toplevels()
[<gtk.gdk.Window object at 0xb74339b4 (GdkWindow at 0x8a4c170)>]
>>> gtk.gdk.window_get_toplevels()[0].get_children()
[]
thì đây
>>> d = gtk.gdk.DisplayManager()
>>> d.get_default_display().get_screen(0).get_root_window().get_children()
[<gtk.gdk.Window object at 0x89dcc84 (GdkWindow at 0x8a4c170)>, <gtk.gdk.Window object at 0x89dccac (GdkWindow at 0x8a4c0c0)>]
Như đã thấy trong giao diện điều khiển đầu ra, tùy chọn thứ hai trả về hai cửa sổ. Nhưng tôi đã không thể tìm ra chúng là gì. Không ai trong số họ có bất kỳ trẻ em và tôi allways có được hai cửa sổ bất kể có bao nhiêu cửa sổ tôi có trên máy tính để bàn của tôi.
Ai đó có thể giải thích thứ bậc của các đối tượng của môi trường máy tính để bàn dựa trên gtk điển hình? Tôi không thể hiểu tại sao mã trên không hoạt động.
Vui lòng không đăng các giải pháp thay thế có nguồn lực cho wnck, xlib, qt, v.v. Tôi quan tâm nhiều hơn đến việc hiểu những gì tôi đang làm sai hơn trong việc nhận lời khuyên như chúng tôi kiểm tra các thư viện khác.
Tôi không có ý là thô lỗ nhưng tôi không nghĩ câu trả lời của bạn là thỏa đáng. Khi kết thúc câu trả lời của bạn, bạn đã gỡ lỗi tương tự ban đầu chuối-cd-reader của mình. Tôi nhận thức được sự khác biệt giữa việc chuyển một cửa sổ gtk và cửa sổ dtk.gdk, nếu bạn đọc kỹ câu hỏi của mình, bạn sẽ nhận thấy rằng đó là một chút chủ đề ... mặc dù tôi đã đề cập đến tôi đã nhầm lẫn, vì vậy tôi đoán tôi yêu cầu mea-culpa. – Pico
Tôi đoán dòng dưới cùng là, tại sao không phải là 'gtk.gdk.window_get_toplevels()' xuất kết quả bạn mô tả? Để phân loại các cửa sổ, tôi đã ấn tượng rằng họ có các thuộc tính cho mục đích duy nhất đó. – Pico
Ok, tôi đoán tôi đã giải thích câu hỏi của bạn có nghĩa là tại sao bạn không thể nhận được _widgets_ con của các cửa sổ. Tôi không biết tại sao cuộc gọi GDK không thực hiện những gì bạn muốn. Có lẽ bạn nên xem mã nguồn libwnck để xem nó hoạt động như thế nào? – ptomato