최근에 전체 화면을 사용하려고하면 Mac OS X 및 Linux에서 다른 동작이 발생합니다.PySide 자발적 크기 조정 이벤트 검사를 수행 할 수있는 플랫폼 간 방법이 있습니까?
내 코드에 화면 크기를 쿼리 한 다음 최대화합니다. 그것이 내가 크기를 조정하고 싶은 유일한 시간입니다. 일단 모든 것이 최대화되면 항목을 그리고 그 위치를 변경합니다.
Linux에서는 크기 조정 이벤트가 자발적인지 확인하여 트릭을 만듭니다. 맥 OS X에
, 나는 초기화 다음 resize 이벤트에, 나는이 True self.unsized 있는지 확인에 True로 (self.unsized) 변수를 초기화합니다. 그것이 맞다면, 나는 모든 위치 조정 등을 수행하고 self.unsized를 False로 설정합니다.Mac OS X 버전이 Linux에서 작동 할 것으로 예상 했었지만 분명히 Linux에서 resize 이벤트가 더 자주 발생해야하므로 self.unsized를 False로 설정하면 처음으로 이벤트가 발생합니다. 일찍, 전체 화면으로 이동하려면 두 번째 크기 조정이 필요합니다.
크로스 플랫폼 방식이 있습니까? 또는 무엇인가하기 전에 OS를 쿼리해야합니까?
일들이 리눅스에서 다르게 작동하는 이유 의견에서 지적
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PySide.QtCore import *
from PySide.QtGui import *
class MyView(QGraphicsView):
def __init__(self, parent=None):
super(MyView, self).__init__(parent)
self.parent = parent
self.scene = QGraphicsScene(self)
self.setScene(self.scene)
class UI(QDialog):
def __init__(self, parent=None):
super(UI, self).__init__(parent)
self.parent = parent
self.unsized = True
self.view = MyView(self)
gridLayout = QGridLayout()
gridLayout.addWidget(self.view, 0, 0, 1, 1)
self.setLayout(gridLayout)
self.setWindowFlags(Qt.FramelessWindowHint)
self.showFullScreen()
def resizeEvent(self, event):
super(UI, self).resizeEvent(event)
print("DEBUG: platform = {0}, spontaneous = {1}, unsized = {2}"
.format(sys.platform, event.spontaneous(), self.unsized))
if ((sys.platform.startswith("linux") and event.spontaneous()) or
(sys.platform.startswith("darwin") and self.unsized)):
self.view.setFrameShape(QFrame.NoFrame)
bounds = self.geometry()
self.X1, self.Y1, self.w, self.h = bounds.getRect()
self.view.setFrameShape(QFrame.NoFrame)
self.view.scene.setSceneRect(0, 0, self.w - 42, self.h - 42)
self.view.setFixedSize(self.w - 40, self.h - 40)
self.unsized = False
app = QApplication(sys.argv)
ui = UI()
ui.show()
sys.exit(app.exec_())
다른 사람들이 테스트 할 수있는 [mcve]를 게시하지 않으면 이런 질문을하는 것이 거의 없습니다. – ekhumoro
예를 들어 업데이트되었습니다. (그것은 내가 가지고있는 대답이다. 문제는 OS에 "What is you?"라고 물어볼 필요가없는 해결책으로 간소화 될 수 있는가이다.) – Ubuntourist
Qt 문서에서이 주제를 읽어야한다. [Window Geometry - X11 특색] (https://doc.qt.io/qt-4.8/application-windows.html#x11-peculiarities). – ekhumoro