def __init__(self, parent=None, math_text=None, horizontalalignment='left', verticalalignment='top', **kwargs): QWidget.__init__(self, parent, **kwargs) layout = QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) r, g, b, a = self.palette().base().color().getRgbF() self._figure = Figure(edgecolor=(r, g, b), facecolor=(r, g, b)) self._canvas = FigureCanvas(self._figure) layout.addWidget(self._canvas) self._figure.clear() self._display_text = self._figure.suptitle( math_text, x=0.0, y=1.0, horizontalalignment=horizontalalignment, verticalalignment=verticalalignment, size=QApplication.font().pointSize() * 2) self._canvas.draw() (x0, y0), (x1, y1) = self._display_text.get_window_extent().get_points() w = x1 - x0 h = y1 - y0 self._figure.set_size_inches(w / 80, h / 80) self.setFixedSize(w, h)
def data(self, index, role): """ This is the main display class for the model. Setting different display roles inside of this class will determine how the views will handle the model data INPUTS: QModelIndex, int OUTPUT: QVariant, strings are cast to QString which is a QVariant """ if not index.isValid(): return None item = index.internalPointer() if role == Qt.DisplayRole or role == Qt.EditRole: for i in range(self.columnCount(item)): if index.column() == i: try: return_val = item.columnData()[self._header_data[i]] except KeyError: return_val = None return return_val # change style for disabled items if role == Qt.FontRole: #font = self.font() font = QApplication.font() font.setStrikeOut(not item.isEnabled()) self.layoutChanged.emit() return font #self.setFont(0, font) # todo disabled item color if role == Qt.ForegroundRole: if item.isEnabled(): color = QColor(*iColor["rgba_text"]) else: color = QColor(*iColor["rgba_text_disabled"]) return color elif role == Qt.BackgroundRole: return QColor(255, 0, 0, 255) if role == Qt.SizeHintRole: return QSize(self.item_width, self.item_height)
def __init__(self, text, help_text, objects_list=None, parent=None): if objects_list is None: objects_list = help_text help_text = "" def create_input_float(obj, ob2=None): if ob2 is not None: val = obj obj = ob2 else: val = 0 res = QDoubleSpinBox(obj) res.setRange(-1000000, 1000000) res.setValue(val) return res def create_input_int(obj, ob2=None): if ob2 is not None: val = obj obj = ob2 else: val = 0 res = QSpinBox(obj) res.setRange(-1000000, 1000000) res.setValue(val) return res field_dict = { str: QLineEdit, float: create_input_float, int: create_input_int } super().__init__(parent=parent) ok_butt = QPushButton("Ok", self) cancel_butt = QPushButton("Cancel", self) self.object_dict = {} self.result = None ok_butt.clicked.connect(self.accept_response) cancel_butt.clicked.connect(self.close) layout = QGridLayout() layout.setAlignment(Qt.AlignVCenter) for i, info in enumerate(objects_list): name = info[0] type_of = info[1] name_label = QLabel(name) name_label.setAlignment(Qt.AlignRight | Qt.AlignVCenter) layout.addWidget(name_label, i, 0) if len(info) == 3: item = field_dict[type_of](type_of(info[2]), self) else: item = field_dict[type_of](self) self.object_dict[name] = (type_of, item) layout.addWidget(item, i, 1) main_layout = QVBoxLayout() main_text = QLabel(text) main_text.setWordWrap(True) font = QApplication.font() font.setBold(True) main_text.setFont(font) main_layout.addWidget(main_text) if help_text != "": help_label = QLabel(help_text) help_label.setWordWrap(True) main_layout.addWidget(help_label) main_layout.addLayout(layout) button_layout = QHBoxLayout() button_layout.addWidget(cancel_butt) button_layout.addStretch() button_layout.addWidget(ok_butt) main_layout.addLayout(button_layout) self.setLayout(main_layout)
os.environ["QT_QPA_PLATFORM"] = "offscreen" if getattr(sys, 'frozen', False): application_path = os.path.dirname(sys.executable) elif __file__: application_path = os.path.dirname(__file__) else: application_path = "." logging.debug("Application path is {}".format(application_path)) os.chdir(application_path) sys.path.insert(0, os.path.abspath(MODULES_PATH)) sys.path.append(os.path.abspath(CLIENT_PATH)) QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps) QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) QApplication.setQuitOnLastWindowClosed(False) app = QApplication(sys.argv) app.setApplicationName(__app_name__) app.setApplicationVersion(__version__) app.setApplicationDisplayName(__app_name__) app.setStyleSheet(qrainbowstyle.load_stylesheet(style="Oceanic")) font = app.font() font.setPointSize(9) app.setFont(font) m = Main(args) m.connect_log_signal(logger.install_signal_handler()) sys.exit(app.exec_())