def sizeHint(self, option, index): k = "{}x{}".format(index.row(), index.column()) if "{}x{}".format(index.row(), index.column()) in self.last_bbox: s = self.last_bbox[k] # print "reusing ndx={} {}x{}".format(k,s.width(),s.height()) del self.last_bbox[k] return QSize(s.width(), s.height()) s = self.get_displayed_data(index) if s == None: return QSize(-1, -1) fm = QFontMetrics(option.font) w = self.table.columnWidth(index.column()) # if option.rect.width() > 0: # w = option.rect.width() size = fm.boundingRect(0, 0, w, 30000, Qt.AlignTop | Qt.AlignLeft | Qt.TextWordWrap, s, 0, []) # if s and len(s) > 50: # print("[{}] w={} / s.w={} s.h={} txt:{}".format(self.i,w,size.width(),size.height(),s)) # h = max( size.height(), self.last_bbox.height()) # print "using ndx={} {}x{}".format(k, size.width(),size.height()) return QSize(size.width(), size.height()) # FIXME hardcoded value
def buttonsOrientationChanged(self, index): self.mainLayout.setSizeConstraint(QLayout.SetNoConstraint); self.setMinimumSize(0, 0); orientation = Qt.Orientation(int(self.buttonsOrientationComboBox.itemData(index))) if orientation == self.buttonBox.orientation(): return self.mainLayout.removeWidget(self.buttonBox); spacing = self.mainLayout.spacing() oldSizeHint = self.buttonBox.sizeHint() + QSize(spacing, spacing); self.buttonBox.setOrientation(orientation) newSizeHint = self.buttonBox.sizeHint() + QSize(spacing, spacing) if orientation == Qt.Horizontal: self.mainLayout.addWidget(self.buttonBox, 2, 0); self.resize(self.size() + QSize(-oldSizeHint.width(), newSizeHint.height())) else: self.mainLayout.addWidget(self.buttonBox, 0, 3, 2, 1); self.resize(self.size() + QSize(newSizeHint.width(), -oldSizeHint.height())) self.mainLayout.setSizeConstraint(QLayout.SetDefaultConstraint)
def __init__(self, spiderName, resumable=False, parent=None): super(SpiderToolButton, self).__init__(parent) self._drag_start = None button_play = QToolButton() button_play.setIcon(QIcon("play.png")) self.triggered.connect( button_play.triggered ) # clicking the outer button run the play functionality button_play.setIconSize(QSize(32, 32)) button_resume = QToolButton() button_resume.setEnabled(resumable) button_resume.setIcon(QIcon("resume.png")) button_resume.setIconSize(QSize(32, 32)) button_pause = QToolButton() button_pause.setIcon(QIcon("pause.png")) button_pause.setIconSize(QSize(32, 32)) self.label_spidername = QLabel(spiderName) self.label_spidername.setStyleSheet(self.stylesheet_label_spidername) layout = QGridLayout() layout.addWidget(self.label_spidername, 0, 0) layout.addWidget(button_pause, 1, 1) layout.addWidget(button_resume, 1, 2) layout.addWidget(button_play, 1, 3) layout.setContentsMargins(10, 8, 10, 8) self.setLayout(layout)
def data(self, index, role): if not index.isValid() or len(self.infoDict) == 0: return None seq = hiero.ui.activeSequence() if not seq: return None item = self.infoDict[index.row()]["Item"] if role == Qt.DecorationRole: if index.column() == 0: try: if isinstance(item, hiero.core.Tag): imageView = seq.thumbnail(item.inTime()) elif isinstance(item, hiero.core.Annotation): imageView = seq.thumbnail(item.timelineIn()) pixmap = QtGui.QPixmap.fromImage( imageView.scaledToWidth(100)) except: # SHOULD RETURN A BLACK PIXMAP HERE... icon = QtGui.QIcon("icons:VideoOnlyWarning.png") pixmap = icon.pixmap(icon.actualSize(QSize(26, 26))) return pixmap elif index.column() == 1: icon = QtGui.QIcon(self.infoDict[index.row()]["Icon"]) pixmap = icon.pixmap(icon.actualSize(QSize(26, 26))) return pixmap elif role == Qt.DisplayRole: label = self.infoDict[index.row()]["Name"] timecode = self.infoDict[index.row()]["TimecodeStart"] note = self.infoDict[index.row()]["Note"] duration = self.infoDict[index.row()]["Duration"] if index.column() == 2: return label elif index.column() == 3: return timecode elif index.column() == 4: return duration elif index.column() == 5: return note elif role == Qt.EditRole: # We will update the note column if index.column() == 5: return elif role == Qt.TextAlignmentRole: if index.column() == 5: return Qt.AlignVCenter return Qt.AlignLeft | Qt.AlignVCenter else: return
def minimumSizeHint(self): count = len(self.letters) widthAll = self.fontMetrics().width(self.letters) * H_GAP_PC widthW = self.fontMetrics().width("WW") heightOne = self.fontMetrics().height() if self.orientation == Qt.Vertical: return QSize(widthW, (heightOne * count) + HANDLE_OFFSET) return QSize(widthAll + HANDLE_OFFSET, heightOne * V_GAP_PC)
def set_Abutton(self, icon, glo): def show_about(nself): if nself.Arabic is None: Amsg = "<center>All credit reserved to the author of FQM " Amsg += " version " + version Amsg += ", This work is a free, open-source project licensed " Amsg += " under Mozilla Public License version 2.0 . <br><br>" Amsg += " visit us for more infos and how-tos :<br> " Amsg += "<b><a href='https://fqms.github.io/'> " Amsg += "https://fqms.github.io/ </a> </b></center>" Amsgb = "About FQM" else: Amsg = u" <center> " Amsg += u" إدارة الحشود الحر النسخة " + version + u" " Amsg += u"حقوق نشر هذا البرنامج محفوظة و تخضع " Amsg += u" لرخصة البرامج الحرة و مفتوحة المصدر " Amsg += u" Mozilla Public License version 2.0 . " Amsg += u"<br><br> " Amsg += u"للمزيد من المعلومات و الشروحات , قم بزيارة :" Amsg += u"<br> <b><a href='https://fqms.github.io/'>" Amsg += u"https://fqms.github.io </a> </b></center>" Amsgb = u"عن النظام" return QMessageBox.about(self, Amsgb, Amsg) self.abutton = QPushButton('', self) self.abutton.setIcon(QPixmap(icon)) self.abutton.setIconSize(QSize(150, 70)) self.abutton.setToolTip('About FQM') self.abutton.clicked.connect(partial(show_about, self)) glo.addWidget(self.abutton)
def show_calorie_calc(self, row_count=0): ''' show calorie calculator :return: ''' if row_count > 0: row_count += 1 self.clear_table(None, None) self.stuff_table.clearContents() self.stuff_table.setColumnCount(3) self.stuff_table.setRowCount(row_count) self.stuff_table.setHorizontalHeaderLabels(['Amount', 'Unit', 'Name']) if row_count > 0: stuff_widget = QWidget() stuff_pixmap = QPixmap('icons/add.png') stuff_icon = QIcon() stuff_add_bt = QToolButton() stuff_icon.addPixmap(stuff_pixmap) stuff_add_bt.setIcon(stuff_icon) stuff_add_bt.setIconSize(QSize(8, 8)) stuff_add_bt.clicked.connect( lambda: self.stuff_table.insertRow(row_count - 1)) stuff_layout = QHBoxLayout() stuff_layout.addWidget(stuff_add_bt) stuff_widget.setLayout(stuff_layout) self.stuff_table.setCellWidget(row_count - 1, 2, stuff_widget)
def setc1(self, path): self.c1scene.clear() self.c1 = Carrier(img=imread(path)) size = len(self.c1.pixelData) if self.c1.img.ndim == 3: size *= 3 size /= 8 self.c1size = int(size) self.txtCarrierSize.setText(str(self.c1size)) if self.c1.payloadExists(): self.lblPayloadFound.setText(">>>>Payload Found<<<<") self.chkOverride.setEnabled(True) else: self.lblPayloadFound.setText("") self.chkOverride.setChecked(False) self.chkOverride.setEnabled(False) w, h = int(self.viewCarrier1.geometry().width()), int( self.viewCarrier1.geometry().height()) pixMap = QPixmap(path) self.c1scene.addPixmap( pixMap.scaled(QSize(w, h), Qt.KeepAspectRatio, Qt.SmoothTransformation)) self.viewCarrier1.setScene(self.c1scene) self.viewCarrier1.fitInView(QRectF(0, 0, w, h), Qt.KeepAspectRatio) self.checkEmbed()
def __init__(self, parent=None, statusBarService=None): """ Creates a QProgressBar and adds it to the given status bar (for threads that can provide accurate progress information). Note: The status bar can either be a QStatusBar or the StatusBarService. In the default BioPARKIN use, it is the StatusBarService instance. @todo: A throbber is created and also added to the status bar (for threads that can only provide start/stop information). """ # super(ProgressBarService, self).__init__(parent) # done in __new__ if statusBarService is not None: self.statusBarService = statusBarService self.progressBar = QProgressBar(None) # used for showing progress self.progressBarMutex = QMutex() self.progressBar.hide() self.statusBarService.addPermanentWidget(self.progressBar) self.progressRunning = False self.throbber = QLabel() self.throbberRunning = False self.throbberMutex = QMutex() self.statusBarService.addPermanentWidget(self.throbber) self.throbber.show() self.throbber.hide() throbberImage = QMovie(":/images/Spinning_wheel_throbber.gif", parent=self.throbber) throbberImage.setScaledSize(QSize(24, 24)) throbberImage.setCacheMode(QMovie.CacheAll) throbberImage.start() self.throbber.setMovie(throbberImage) self.throbber.setFixedSize(24, 24)
def __init__(self, file_to_open=None, parent=None): super(MainWindow, self).__init__(parent) GlobalInfo.main_window = self # initialization self.caption = "angr Management" self.setMinimumSize(QSize(400, 400)) self.setDockNestingEnabled(True) self.workspace = None self._states_toolbar = None # type: StatesToolbar self._analysis_toolbar = None # type: AnalysisToolbar self._progressbar = None # type: QProgressBar self._status = "" self._progress = None self._init_menus() self._init_toolbars() self._init_statusbar() self._init_workspace() # I'm ready to show off! self.show() self.status = "Ready." if file_to_open is not None: # load a binary self._open_loadbinary_dialog(file_to_open)
def save_image_to(self, path): TOP_MARGIN = 50 LEFT_MARGIN = 50 # Determine the size of the entire graph graph_size = self._graph_size() image_size = QSize(graph_size.width() + LEFT_MARGIN * 2, graph_size.height() + TOP_MARGIN * 2 ) image = QImage(image_size, QImage.Format_ARGB32) image.fill(Qt.white) # white background painter = QPainter(image) painter.translate(TOP_MARGIN, LEFT_MARGIN) painter.setRenderHint(QPainter.TextAntialiasing) self._paint(painter, QPoint(-TOP_MARGIN, -LEFT_MARGIN), QPoint(image_size.width(), image_size.height()) ) painter.end() image.save(path)
def __create_filter_ui(self): """ Create filter widgets """ filter_layout = QHBoxLayout() filter_layout.setSpacing(1) filter_layout.setContentsMargins(0, 0, 0, 0) self.filter_reset_btn = QPushButton() icon = QIcon(':/filtersOff.png') self.filter_reset_btn.setIcon(icon) self.filter_reset_btn.setIconSize(QSize(22, 22)) self.filter_reset_btn.setFixedSize(24, 24) self.filter_reset_btn.setToolTip('Reset filter') self.filter_reset_btn.setFlat(True) self.filter_reset_btn.clicked.connect( partial(self.on_filter_set_text, '')) self.filter_line = QLineEdit() self.filter_line.setPlaceholderText('Enter filter string here') self.filter_line.textChanged.connect(self.on_filter_change_text) completer = QCompleter(self) completer.setCaseSensitivity(Qt.CaseInsensitive) completer.setModel(QStringListModel([], self)) self.filter_line.setCompleter(completer) filter_layout.addWidget(self.filter_reset_btn) filter_layout.addWidget(self.filter_line) return filter_layout
def set_data(self, base_time, employee_id): global dao # self.potential_tasks_cache = PotentialTasksCache(dao.task_dao,base_time.date()) # self.time_edit_dialog.set_potential_tasks_cache(self.potential_tasks_cache) self.employee_id = employee_id self.employee = dao.employee_dao.find_by_id(employee_id) self.all_tars = dao.task_action_report_dao.load_task_action_reports_for_edit( self.employee, base_time.date()) self.added_tars = [] self.manual_work_timetracks = dao.timetrack_dao.all_work_for_employee_date_manual( self.employee.employee_id, base_time.date()) self.manual_presence_timetracks = dao.timetrack_dao.all_manual_presence_timetracks( self.employee, base_time.date()) self.presence_task_id = dao.task_action_report_dao.presence_task( ).task_id self.base_time = base_time self.tar_to_delete = [] self.presence_dialog.set_base_date(base_time.date()) self._redraw() box = self.view.scene().sceneRect().size().toSize() s = QSize(box.width(), box.height() + 80) self.view.setMinimumSize(s)
def setLayout(self): self.myStatusBar = QStatusBar() self.setStatusBar(self.myStatusBar) self.duckIcon = QIcon("duck.jpeg") self.happyDuckIcon = QIcon("happy-duck.jpeg") qWidget = QWidget() gridLayout = QGridLayout(qWidget) row = 0 self.setCentralWidget(qWidget) row = row + 1 self.rebootButton = QPushButton("Click to reset") #self.rebootButton.setIcon(QIcon("duck.jpeg")) self.rebootButton.setIconSize(QSize(200, 200)) gridLayout.addWidget(self.rebootButton, row, 0) self.rebootButton.clicked.connect(self.reboot) if filecmp.cmp("wpa_supplicant.conf", "wpa_supplicant.conf.orig"): self.myStatusBar.showMessage("Waiting to onboard.") self.rebootButton.setIcon(self.duckIcon) self.thread = Timer(5, self.checkFiles) self.thread.start() else: self.rebootButton.setIcon(self.happyDuckIcon) self.myStatusBar.showMessage("waiting for DHCP address") interface = "wlan1" p = subprocess.Popen(["/sbin/dhclient", interface], shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) res, err = p.communicate()
def __init__(self, parent=None): """Initialize Widget.""" super().__init__(parent) self.setLayout(QVBoxLayout()) self.imglabel = QLabel() self.imglabel.setBackgroundRole(QPalette.Base) self.imglabel.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.imglabel.setScaledContents(True) # Resize pixmap along with label self.imglabel.setAlignment(Qt.AlignCenter) self.imglabel.setText("(No image yet)") self.namelabel = QLabel() self.scrollarea = QScrollArea() self.scrollarea.setWidget(self.imglabel) self.scrollarea.setWidgetResizable(False) self.scrollarea.setAlignment(Qt.AlignCenter) self.layout().addWidget(self.scrollarea) self.layout().addWidget(self.namelabel) self.scale_factor = 1.0 self._initial_size = QSize(0, 0) self._img_path = "" self.setContextMenuPolicy(Qt.CustomContextMenu) # pylint: disable=no-member self.customContextMenuRequested.connect(self.show_context_menu) self.menu = QMenu() self.add_actions_to_menu(self.menu)
def sizeHint(self): """ Specifies the default size hint for this widget @ In, None @ Out, size, QSize, suggested size """ return QSize(200, 200)
def paint(self, painter, point): painter.save() size = QSize(self.width(), self.height()) painter.setBrush(self.bg_color) painter.drawRoundedRect(QRect(point, size), BLOCK_RADIUS, BLOCK_RADIUS) # Рисуем столбцы p = QPoint(point) + QPoint(0, BLOCK_RADIUS) for c in self.columns: p += QPoint(BLOCK_RADIUS, 0) c.paint(painter, p) p += QPoint(c.width(), 0) # Рисуем левые порты if len(self.left_pins): p = QPoint(point) p += QPoint(0, size.height() / (len(self.left_pins) + 1)) for lp in self.left_pins: lp.paint(painter, p) p += QPoint(0, size.height() / (len(self.left_pins) + 1)) # Рисуем правые порты if len(self.right_pins): p = QPoint(point) p += QPoint(size.width(), size.height() / (len(self.right_pins) + 1)) for rp in self.right_pins: rp.paint(painter, p) p += QPoint(0, size.height() / (len(self.right_pins) + 1)) painter.restore()
def getSizeHint(self, row, column, item): """ Return the size hint for a cell """ if column == 0: return QSize(200, 26) return None
def set_viewport_size(self, width, height): """Sets the page viewport size. :param width: An integer that sets width pixel count. :param height: An integer that sets height pixel count. """ self.page.setViewportSize(QSize(width, height))
def __init__(self, presenter, parent=None): super(MainView, self).__init__(presenter, parent=parent) self.setLayout(QGridLayout()) addEffects = QPushButton(self) addEffects.isWordWrap = False addEffects.setFlat(True) addEffects.setCursor(Qt.PointingHandCursor) addEffects.setStyleSheet("QPushButton{outline:0; border-radius: 0px}") addEffects.setIcon(QPixmap("gui\\Add-Effects.png")) addEffects.setIconSize(QSize(300, 50)) self.layout().addWidget(addEffects, 0, 0, 1, 1) self.setMinimumSize(QSize(640, 480)) addEffects.clicked.connect(self.addEffectsClicked)
def capture(self, region=None, selector=None, format=QImage.Format_ARGB32_Premultiplied): """Returns snapshot as QImage. :param region: An optional tuple containing region as pixel coodinates. :param selector: A selector targeted the element to crop on. :param format: The output image format. """ if region is None and selector is not None: region = self.region_for_selector(selector) if region: x1, y1, x2, y2 = region w, h = (x2 - x1), (y2 - y1) image = QImage(QSize(x2, y2), format) painter = QPainter(image) self.main_frame.render(painter) painter.end() image = image.copy(x1, y1, w, h) else: self.main_frame.setScrollBarPolicy(QtCore.Qt.Vertical, QtCore.Qt.ScrollBarAlwaysOff) self.main_frame.setScrollBarPolicy(QtCore.Qt.Horizontal, QtCore.Qt.ScrollBarAlwaysOff) self.page.setViewportSize(self.main_frame.contentsSize()) image = QImage(self.page.viewportSize(), format) painter = QPainter(image) self.main_frame.render(painter) painter.end() return image
def _setItem(self, title, subtitle, pic_path): item_widget = QListWidgetItem() item_widget.setSizeHint(QSize(90, 60)) self.list_widget.addItem(item_widget) label = MyLable(title, subtitle, pic_path) self.list_widget.setItemWidget(item_widget, label)
def sizeHint(self, option, index): '''Custom size calculation of our items''' uid = to_str(index.data(role=IDROLE)) + 'x' + str(option.rect.width( )) #Fix Bug #967 (sometime uid have some strange unicode chars ... ?) try: return self.memoized_size[uid] except: tweet = to_str(index.data(Qt.DisplayRole)) # One time is enought sizeHint need to be fast if not self.fm: self.normFont = QFont(option.font) self.normFont.setPointSizeF(option.font.pointSizeF() * self.fsize) self.fm = QFontMetrics(self.normFont) if not self.minifm: self.miniFont = QFont(option.font) self.miniFont.setPointSizeF(option.font.pointSizeF() * 0.8 * self.fsize) self.minifm = QFontMetrics(self.miniFont) height = self.fm.boundingRect( 0, 0, option.rect.width() - 75, 800, int(Qt.AlignTop) | int(Qt.AlignLeft) | int(Qt.TextWordWrap), tweet, ).height() reply_text = to_str(index.data(role=REPLYTEXTROLE)) if reply_text: height += self.minifm.boundingRect( 0, 0, option.rect.width() - 75, 800, int(Qt.AlignTop) | int(Qt.AlignLeft) | int(Qt.TextWordWrap), reply_text, ).height() + 5 height += self.minifm.boundingRect( 0, 0, option.rect.width() - 75, 800, int(Qt.AlignTop) | int(Qt.AlignLeft) | int(Qt.TextWordWrap), 'LpqAT', ).height() height += 10 # Spacer if height < 70: height = 70 self.memoized_size[uid] = QSize(option.rect.width(), height) return self.memoized_size[uid]
def create_header_bar(self, layout): back_button = QToolButton() back_button.setIconSize(QSize(30, 30)) back_button.setIcon(QIcon(os.path.join("icons", "ic_action_back.png"))) back_button.setStyleSheet("border: 0px;") back_button.setToolTip("Zurück") back_button.clicked.connect(self.back) layout.addWidget(back_button)
def __init__(self, movieObj, parent): super(MovieItem, self).__init__(parent) self.movieObj = movieObj self.setSizeHint(QSize(310, 500)) self.setData(Qt.UserRole, movieObj)
def forceRepaint(self): """ TOWRITE """ # HACK: Take that QMdiArea! hack = self.size() # QSize self.resize(hack + QSize(1, 1)) self.resize(hack)
def create_header_bar(self, layout): self.sync_button = QToolButton() self.sync_button.setIconSize(QSize(30, 30)) self.sync_button.setIcon(QIcon(os.path.join("icons", "ic_action_sync.png"))) self.sync_button.setStyleSheet("border: 0px;") self.sync_button.setToolTip("Sync") self.sync_button.clicked.connect(self.sync_clicked) self.sync_button.setVisible(False) layout.addWidget(self.sync_button) self.clipboard_button = QToolButton() self.clipboard_button.setIconSize(QSize(30, 30)) self.clipboard_button.setIcon(QIcon(os.path.join("icons", "ic_action_copy.png"))) self.clipboard_button.setStyleSheet("border: 0px;") self.clipboard_button.setToolTip("in die Zwischenablage") self.clipboard_button.clicked.connect(self.copy_to_clipboard) self.clipboard_button.setVisible(False) layout.addWidget(self.clipboard_button)
def innerSize(self): fontmetrics = QFontMetrics(self.scene().font()) height = fontmetrics.height() width = fontmetrics.width(self.name) if self.m_portFlags == 0: width = width + self.widgetWidth return QSize(width, height)
def setAbout(self, m): self.pushButton = QPushButton() self.icon1 = QIcon() self.icon1.addPixmap(QPixmap(self.plogo), QIcon.Normal, QIcon.Off) self.pushButton.setIcon(self.icon1) self.pushButton.setIconSize(QSize(300, 100)) self.pushButton.clicked.connect(self.show_about) m.addWidget(self.pushButton)
def sizeHint(self, option, index): if index.column() != 0: return super(ScrapeItemDelegate, self).sizeHint(option, index) else: images = index.data(role=Qt.DisplayRole) if images: return QSize(self.max_cell_res[0], self.max_cell_res[1]) else: return super(ScrapeItemDelegate, self).sizeHint(option, index)