Как узнать размер и расположение панели задач с помощью PyGTK?

1

Есть ли способ получить позицию и размер панели задач в Windows с помощью PyGTK?

Если нет, существует ли хотя бы способ определения свободной клиентской области на конкретном мониторе? (Другими словами, область, на которой панель задач не занимает?)

  • 0
    Зачем вам это нужно? В любом случае, вы рисуете в своем собственном окне, даже если оно покрывает весь экран, кроме панели задач. Вы всегда можете проверить свой размер окна, не так ли?
  • 0
    @abbot: я хотел создать окно, которое было бы расположено относительно позиции панели задач.
Теги:
area
taskbar
pygtk

2 ответа

0

Немного аккуратный (но только окна), поскольку это создает динамическую пару переменных, которые затем можно использовать для корректировки смещения вашего оставшегося кода;

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)

0

Вы можете максимизировать окно и проверить его геометрию после ее максимального увеличения. Что-то вроде этого (работает как в 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).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню