Удалить границы на PyQt5 QWidget - PullRequest
0 голосов
/ 18 июня 2020

В настоящее время я пытаюсь отобразить изображение без полей на дополнительном экране, изменяя значение по умолчанию для Matplotlib с помощью PyQT5. Для контекста, это для отображения изображений на пространственном модуляторе света, который использует простой выход HDMI и обрабатывается моим компьютером как вторичный экран. Его разрешение составляет 1280х1024. Я следил за ответом на Как отключить кнопку максимизации, минимизации и закрытия окна matplotlib? , ссылка, но все еще заканчивается рамкой внизу рисунка, а границы добавляются при отображении фигуры полноэкранный режим тоже. Это класс, который я использую для создания окна:

class SLMscreen:


def __init__(self, resX, resY):
    """
    Initializes the window to be displayed on the SLM
    :param resX: Width in pixel
    :param resY: Height in pixel
    """
    #dirty way of finding the primary screen size, could be improved
    app = QApplication([])
    screen_resolution = app.desktop().screenGeometry()
    width, height = screen_resolution.width(), screen_resolution.height()
    mpl.rcParams['toolbar'] = 'None'
    self.fig = plt.figure(figsize=(resX / 100, resY / 100), frameon=False)
    self.ax = plt.axes([0,0,1,1], frameon=False)
    self.ax.get_xaxis().set_visible(False)
    self.ax.get_yaxis().set_visible(False)
    self.fig.patch.set_visible(False)
    self.ax.patch.set_visible(False)
    window = self.fig.canvas.parent()
    window.setWindowFlags(Qt.FramelessWindowHint | Qt.CustomizeWindowHint)
    window.setGeometry(width,0,resX,resY)
    window.layout().setContentsMargins(0, 0, 0, 0)
    window.layout().setSpacing(0)

    #self.fig.canvas.parent().showFullScreen()
    #self.figManager.window.showMaximized()

def update(self, array):
    """
    Displays the array on the SLM
    :param array: np.ndarray
    """
    self.ax.imshow(array, cmap='gray', aspect='equal')
    self.figManager.window.showMaximized()

И я проверяю правильную инициализацию окна с помощью этого очень простого фрагмента:

import numpy as np
from SLM import SLMscreen

mask =255* np.zeros((1024,1280), dtype='uint8')
slm_screen = SLMscreen(1280,1024)
slm_screen.update(mask)

В конце окно выглядит вот так:

The window still has borders left, right and bottom

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 18 июня 2020

Я наконец нашел здесь ответ: https://discourse.matplotlib.org/t/image-full-screen/19797/2 При добавлении window.statusBar().setVisible(False) границы исчезают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...