From 59fed433c9fd8af5738f5ae7199e517a34da9e55 Mon Sep 17 00:00:00 2001 From: Blaine Date: Mon, 20 Apr 2020 18:52:25 +0530 Subject: resizeable window --- src/main/python/main.py | 81 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 7 deletions(-) (limited to 'src/main/python/main.py') diff --git a/src/main/python/main.py b/src/main/python/main.py index 18c8d38..88fc48b 100644 --- a/src/main/python/main.py +++ b/src/main/python/main.py @@ -1,12 +1,79 @@ from fbs_runtime.application_context.PyQt5 import ApplicationContext -from PyQt5.QtWidgets import QMainWindow - +from PyQt5.QtCore import Qt +from PyQt5.QtGui import (QBrush, QColor, QImage, QPainter, + QPalette) +from PyQt5.QtWidgets import (QApplication, QComboBox, QDialog, QGraphicsScene, + QGraphicsView, QGridLayout, QHBoxLayout, QLabel, + QMessageBox, QPushButton, QStyleFactory) +from utils.sizes import paperSizes import sys +class appWindow(QDialog): + def __init__(self, parent=None): + super(appWindow, self).__init__(parent) + + self._ppi = 72 + self._canvasSize = "A0" + self.resize(1280, 720) + + + self.painter = QGraphicsScene(0, 0, *paperSizes[self.canvasSize][self.ppi]) + self.painter.setBackgroundBrush(QBrush(Qt.white)) + + self.createToolbar() + self.canvas = QGraphicsView(self.painter) + mainLayout = QGridLayout() + mainLayout.addLayout(self.topLayout, 0, 0, 1, -1) + mainLayout.addWidget(self.canvas, 1, 0, -1, -1) + self.setLayout(mainLayout) + + def createToolbar(self): + self.topLayout = QHBoxLayout() + sizeComboBox = QComboBox() + sizeComboBox.addItems([f'A{i}' for i in range(5)]) + sizeComboBox.activated[str].connect(self.setCanvasSize) + sizeLabel = QLabel("Canvas Size") + sizeLabel.setBuddy(sizeComboBox) + self.topLayout.addWidget(sizeLabel) + self.topLayout.addWidget(sizeComboBox) + + ppiComboBox = QComboBox() + ppiComboBox.addItems(["72", "96", "150", "300"]) + ppiComboBox.activated[str].connect(self.setCanvasPPI) + ppiLabel = QLabel("Canvas ppi") + ppiLabel.setBuddy(ppiComboBox) + self.topLayout.addWidget(ppiLabel) + self.topLayout.addWidget(ppiComboBox) + + def setCanvasSize(self, size): + self.canvasSize = size + + def setCanvasPPI(self, ppi): + self.ppi = ppi + + @property + def canvasSize(self): + return self._canvasSize + @property + def ppi(self): + return self._ppi + + @canvasSize.setter + def canvasSize(self, size): + self._canvasSize = size + if self.painter: + self.painter.setSceneRect(0, 0, *paperSizes[self.canvasSize][self.ppi]) + print(*paperSizes[self.canvasSize][self.ppi]) + @ppi.setter + def ppi(self, ppi): + self._ppi = int(ppi) + if self.painter: + self.painter.setSceneRect(0, 0, *paperSizes[self.canvasSize][self.ppi]) + print(*paperSizes[self.canvasSize][self.ppi]) + if __name__ == '__main__': - appctxt = ApplicationContext() # 1. Instantiate ApplicationContext - window = QMainWindow() - window.resize(250, 150) - window.show() - exit_code = appctxt.app.exec_() # 2. Invoke appctxt.app.exec_() + app = ApplicationContext() # 1. Instantiate ApplicationContext + test = appWindow() + test.show() + exit_code = app.app.exec_() # 2. Invoke appctxt.app.exec_() sys.exit(exit_code) \ No newline at end of file -- cgit