def _init_widgets(self): # current function function_label = QLabel() self._function_label = function_label # options button option_btn = QPushButton() option_btn.setText('Options') option_btn.setMenu(self._options_menu.qmenu()) # Save image button saveimage_btn = QPushButton() saveimage_btn.setText('Save image to...') saveimage_btn.clicked.connect(self._on_saveimage_btn_clicked) layout = QHBoxLayout() layout.setContentsMargins(2, 2, 2, 2) layout.addWidget(function_label) layout.addStretch(0) layout.addWidget(saveimage_btn) layout.addWidget(option_btn) layout.setContentsMargins(0, 0, 0, 0) self.setLayout(layout)
def _init_widgets(self): # current function function_label = QLabel() self._function_label = function_label # options button option_btn = QPushButton() option_btn.setText('Options') option_btn.setMenu(self._options_menu.qmenu()) layout = QHBoxLayout() layout.setContentsMargins(2, 2, 2, 2) layout.addWidget(function_label) layout.addStretch(0) layout.addWidget(option_btn) layout.setContentsMargins(0, 0, 0, 0) self.setLayout(layout)
class DatePicker(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) self._dateEdit = QDateEdit() self._dateEdit.setDisplayFormat("dd/MM/yyyy") self._bttn = QPushButton("") self._bttn.setObjectName("MenuBttn") menu = QMenu(self._bttn) cal = QCalendarWidget() action = QWidgetAction(self._bttn) action.setDefaultWidget(cal) menu.addAction(action) self._bttn.setMenu(menu) cal.clicked[QtCore.QDate].connect(self._dateEdit.setDate) self.setupUI() def clear(self): # self._dateEdit.clear() self._dateEdit.findChild(QLineEdit).setText('') def setReadOnly(self, val=True): self._dateEdit.findChild(QLineEdit).setReadOnly(val) def setDate(self, date): self._dateEdit.setDate(date) def setupUI(self): self._bttn.setMaximumWidth(20) layout = QHBoxLayout() layout.addWidget(self._dateEdit) layout.addWidget(self._bttn) layout.addStretch() self.setLayout(layout) def getDate(self): return self._dateEdit.date()
def __init__(self): QWidget.__init__(self) m = QMenu(self) b = QPushButton("Hello", self) b.setMenu(m)
class CookieCutterWidget(QWidget): "CookieCutter UI" FILE_FILTER = u'Inselect cookie cutter (*{0})'.format( CookieCutter.EXTENSION ) def __init__(self, parent=None): super(CookieCutterWidget, self).__init__(parent) # Configure the UI self._create_actions() self.button = QPushButton("Cookie cutter") self.button.setMaximumWidth(250) self.button.setStyleSheet("text-align: left") self.popup = QMenu() self.inject_actions(self.popup) self.button.setMenu(self.popup) layout = QHBoxLayout() layout.addWidget(self.button) self.setLayout(layout) def _create_actions(self): self.save_to_new_action = QAction( "Save boxes to new cookie cutter...", self ) self.choose_action = QAction( "Choose...", self, triggered=self.choose ) self.clear_action = QAction( "Do not use a cookie cutter", self, triggered=self.clear ) self.apply_current_action = QAction("Apply", self) def inject_actions(self, menu): "Adds cookie cutter actions to menu" menu.addAction(self.choose_action) menu.addAction(self.apply_current_action) menu.addSeparator() menu.addAction(self.clear_action) menu.addSeparator() menu.addAction(self.save_to_new_action) @report_to_user def clear(self): "Clears the choice of cookie cutter" cookie_cutter_choice().clear() @report_to_user def choose(self): "Shows a 'choose cookie cutter' file dialog" debug_print('CookieCutterWidget.choose_cookie_cutter') path, selectedFilter = QFileDialog.getOpenFileName( self, "Choose cookie cutter", unicode(cookie_cutter_choice().last_directory()), self.FILE_FILTER ) if path: # Save the user's choice cookie_cutter_choice().load(path) def sync_actions(self, has_document, has_rows): "Sync state of actions" debug_print('CookieCutterWidget.sync_ui') current = cookie_cutter_choice().current has_current = cookie_cutter_choice().current is not None name = current.name if current else 'Cookie cutter' # Truncate text to fit button metrics = QFontMetrics(self.button.font()) elided = metrics.elidedText( name, Qt.ElideRight, self.button.width() - 25 ) self.button.setText(elided) self.save_to_new_action.setEnabled(has_rows) self.clear_action.setEnabled(has_current) self.apply_current_action.setEnabled(has_document and has_current)