Как добраться, список открыл окна в PyGTK или GTK в Ubuntu?

Из этих ответов у меня есть вид просеянных решение. Мне действительно нравится идея понятия ссылки. Повторяющиеся события могли быть связанным списком с хвостом, зная его правило повторения. Изменение одного события тогда было бы легко, потому что ссылки остаются на месте, и удаление события легко также - Вы просто расцепляете событие, удаляете его и повторно связываете событие прежде и после него. Все еще необходимо запросить повторяющиеся события каждый раз, когда кто-то смотрит на новый период времени, никогда не, смотрел на прежде на календаре, но иначе это довольно чисто.

7
задан MestreLion 22 May 2013 в 23:38
поделиться

4 ответа

Вероятно, вы захотите использовать libwnck:

http://library.gnome.org/devel/libwnck/stable/

Я считаю, что в python-gnome есть привязки Python или какой-то похожий пакет.

После запуска основного цикла GTK + вы можете сделать следующее:

import wnck
window_list = wnck.screen_get_default().get_windows()

Некоторые интересные методы в окне из этого списка - get_name () и activate ().

Это напечатает имена окон на консоль при нажатии кнопки. Но почему-то пришлось дважды нажать кнопку. Я впервые использую libwnck, так что, наверное, что-то упускаю. : -)

import pygtk
pygtk.require('2.0')
import gtk, wnck

class WindowLister:
    def on_btn_click(self, widget, data=None):
        window_list = wnck.screen_get_default().get_windows()
        if len(window_list) == 0:
            print "No Windows Found"
        for win in window_list:
            print win.get_name()

    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)

        self.button = gtk.Button("List Windows")
        self.button.connect("clicked", self.on_btn_click, None)

        self.window.add(self.button)
        self.window.show_all()

    def main(self):
        gtk.main()

if __name__ == "__main__":
    lister = WindowLister()
    lister.main()
9
ответ дан 6 December 2019 в 05:55
поделиться

Анализ вывода командной строки обычно не лучший способ, вы зависите от того, что вывод программы не меняется, что может отличаться от версии или платформы. Вот как это сделать с помощью Xlib:

import Xlib.display

screen = Xlib.display.Display().screen()
root_win = screen.root

window_names = []
for window in root_win.query_tree()._data['children']:
    window_name = window.get_wm_name()
    window_names.append(window_name)

print window_names

Обратите внимание, что этот список будет содержать окна, которые вы обычно не классифицируете как «окна», но это не имеет значения для того, что вы пытаетесь сделать.

3
ответ дан 6 December 2019 в 05:55
поделиться

Из ссылка PyGTK :

gtk.gdk.window_get_toplevels ()

gtk.gdk.window_get_toplevels () функция возвращает список всех окна верхнего уровня, известные PyGTK на экран по умолчанию. Окно верхнего уровня - это дочерний элемент корневого окна (см. gtk.gdk.get_default_root_window () функция).

2
ответ дан 6 December 2019 в 05:55
поделиться

Я действительно не знаю, как проверить, является ли окно GTK-окном. Но если вы хотите проверить, сколько окон открыто в данный момент, попробуйте "wmctrl -l". Конечно, сначала установите его.

2
ответ дан 6 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: