Есть ли способ получить позицию и размер панели задач в Windows с помощью PyGTK?
Если нет, существует ли хотя бы способ определения свободной клиентской области на конкретном мониторе? (Другими словами, область, на которой панель задач не занимает?)
Немного аккуратный (но только окна), поскольку это создает динамическую пару переменных, которые затем можно использовать для корректировки смещения вашего оставшегося кода;
import win32gui
#discover where top left corner of active screen is
#return is a dictionary list of keys and values
monitors = win32api.EnumDisplayMonitors()
display1 = win32api.GetMonitorInfo(monitors[0][0])
#from the Work key, select the first and second values
x_adj=(display1['Work'][0])
y_adj=(display1['Work'][1])
Затем в оставшейся части кода используйте эти настройки, чтобы уточнить навигационные клики. В моем случае я перемещаюсь по окну, используя pyautogui
import pyautogui
#just move the mouse to a position
pyautogui.moveTo(x=103+x_adj, y=235+y_adj)
#move and click the mouse
pyautogui.click(x=103+x_adj, y=235+y_adj)
В вашем случае вам нужно будет создать верхний левый угол нового окна в (или относительно) координатах (x_adj,y_adj)
Вы можете максимизировать окно и проверить его геометрию после ее максимального увеличения. Что-то вроде этого (работает как в Windows, так и в Linux):
import gtk
size = (10, 10)
def expose(widget, *args):
global size
size = widget.get_size()
if size != (10, 10):
gtk.main_quit()
win = gtk.Window()
win.resize(*size)
win.connect('expose-event', expose)
win.show()
win.maximize()
gtk.main()
print size
Это несколько хакерский, но я не уверен, что для этого есть переносимый способ (без использования Win32 API, если вы работаете в Windows).