Форум сайта python.su
кто нибудь знает как на pygtk сделать окно которое ведет себя как например гном-панель т.е. не дает другим окнам перекрывать себя?
Офлайн
Офлайн
Спасибо огромное, именно то что надо!
Офлайн
В последней версии linux mint нет pygtk. Не нашел как его установить. Может кто знает как установить pygtk в linux mint 21 или есть еще вариант сделать то же самое на gtk3 c помощью PyGObject (тоже не могу найти как)?
Отредактировано kins (Март 1, 2023 08:02:04)
Офлайн
Поставь GTK
https://www.gtk.org/docs/installations/linux/
Поставь PyGTK
https://pygobject.readthedocs.io/en/latest/getting_started.html
Там через pip он ставится.
Офлайн
через pip pygtk не ставится. Я же пишу что linux mint 21 убрал это вместо него есть PyGObject и он вполне работает. Но я написал приложение которое как панель откусывает часть экрана и не дает окнам его перекрыть. Так вот PyGObject не дает таким же образом это сделать как в PyGTK (http://stackoverflow.com/questions/3859045/preventing-window-overlap-in-gtk) видимо там это где то в другом объекте.
Отредактировано kins (Март 2, 2023 09:41:43)
Прикреплённый файлы:
screenshot108.png (90,9 KБ)
Офлайн
kinsЧерез pip3 ставь его.
через pip pygtk не ставится
kinsДа это звучит ахинейно. В Linux Mint ничего не создают и не меняют, это просто сборка. Всё, что тебе не хватает, ты просто доустанавливаешь сам. В том числе и из исходников там можно установить.
Я же пишу что linux mint 21 убрал это
kinsА в питоне, ты думаешь, какой-то свой pygtk? Питоновский pygtk - это просто нашлёпка, которая проводит команды из питона в PyGObject, который в свою очередь делает то же самое - проводит команды из своего языка команд в библиотеку gtk, которая уже в свою очередь отдаёт команды операционной системе через системные вызовы и другие библиотеки системы. Понимаешь, тут одно на другом. И говорить, что из-за одной нашлёпки сверху теперь, оказывается, всё не работает, это можно говорить, когда не понимаешь архитектуры всей этой.
вместо него есть PyGObject
Отредактировано py.user.next (Март 3, 2023 00:13:17)
Офлайн
через pip3 не ставится. Как установить из исходников?
Прикреплённый файлы:
screenshot109.png (66,6 KБ)
Офлайн
После долгих поисков нашел. Вот решение:
import gi gi.require_version('Gtk','3.0') from gi.repository import Gtk, Gdk import Xlib from Xlib.display import Display from Xlib import X display = Display() topw = display.create_resource_object('window', window.get_toplevel().get_window().get_xid()) topw.change_property(display.intern_atom('_NET_WM_STRUT'), display.intern_atom('CARDINAL'), 32, [0, 0, bar_size, 0 ], X.PropModeReplace) topw.change_property(display.intern_atom('_NET_WM_STRUT_PARTIAL'), display.intern_atom('CARDINAL'), 32, [0, 0, bar_size, 0, 0, 0, 0, 0, x, x+width-1, 0, 0], X.PropModeReplace)
Отредактировано kins (Июль 10, 2023 15:41:36)
Офлайн