вопросы по разметке окон matplotlib - PullRequest
10 голосов
/ 18 октября 2011

У меня есть два вопроса относительно расположения окна mpl (с использованием бэкэнда WXAgg)

1-) Как создать развернутое окно, вместо того, чтобы я каждый раз нажимал на окно, чтобы развернуть его?

2-) У меня два экрана.Интересно, что мои окна mpl имеют тенденцию открываться на моем маленьком экране.Как заставить mpl / ipython / WX / X-windows открывать окна mpl на моем втором и более крупном мониторе?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 27 сентября 2012

Я использую библиотеку Tk для печати, вы можете установить ее по умолчанию в файле ~/.matplotlib/matplotlibrc, написав:

backend      : TkAgg

Это позволяет мне устанавливать положение и размеры окна, используя:

import matplotlib.pyplot as plot
wm = plot.get_current_fig_manager()
wm.window.wm_geometry("800x900+50+50")

Поскольку кто-то может захотеть разместить свое окно matplotlib на Mac, я хотел бы сделать быстрый вклад.Я часто работаю с внешним экраном и без него (на работе и дома) и хотел какой-то способ автоматического использования внешнего экрана, если он доступен.К счастью, операционная система Mac может быть подключена через AppKit.

Следующий фрагмент вернет список объектов ScreenInfo с позицией, шириной и высотой:

from AppKit import NSScreen

class ScreenInfo:
    pass

def getScreensInfo():
    screens = []

    for i, s in enumerate(NSScreen.screens()):
        screen = ScreenInfo()
        frame = s.frame()
        screen.x = frame.origin.x
        screen.y = frame.origin.y
        screen.w = frame.size.width
        screen.h = frame.size.height
        screens.append(screen)
    return screens
5 голосов
/ 19 октября 2011

Относительно вашего первого вопроса, вы можете использовать Maximize в вашем менеджере фигур (так как ваш менеджер фигур - FigureManagerWx экземпляр) или эквивалентные методы в случае других бэкэндов:

>>> from matplotlib import pyplot as plt
>>> plt.plot([1,2,6,4])
[<matplotlib.lines.Line2D object at 0x0000000008E5D2E8>]
>>> mng = plt.get_current_fig_manager()
>>> plt.show()                                    # you get normal size
>>> mng.frame.Maximize(True)                      # now mpl window maximizes

ДляВторой вопрос, я не уверен (я не могу это проверить), но если проблему можно решить, установив положение вашей фигуры на экране, расширенном на два монитора, то вы можете использовать SetPosition (снова для бэкэнда wxAgg):

>>> mng.frame.SetPosition(*args, **kwargs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...