class ExampleDialog(QDialog): def __init__(self, parent): QDialog.__init__(self, parent) # enable minimize button # testing to make sure key events are processed # correctly when minimized self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowMinimizeButtonHint) self.setGeometry(100, 100, 200, 100) self.setWindowTitle("Hello World") self.setToolTip("This is a <b>QWidget</b> widget") self.btn = QPushButton("Log Text", self) self.btn.setToolTip("This is a <b>QPushButton</b> widget") self.btn.resize(self.btn.sizeHint()) self.btn.clicked.connect(self.logText) self.lineedit = QLineEdit("Hello World", self) self.lineedit.setToolTip("Type Something") layout = QVBoxLayout(self) layout.addWidget(self.lineedit) layout.addWidget(self.btn) def logText(self): Application.LogMessage(self.lineedit.text())
class ExampleDialog( QDialog ): def __init__( self, parent ): QDialog.__init__( self, parent ) # enable minimize button # testing to make sure key events are processed # correctly when minimized self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowMinimizeButtonHint ) self.setGeometry( 100, 100, 200, 100 ) self.setWindowTitle( "Hello World" ) self.setToolTip( "This is a <b>QWidget</b> widget" ) self.btn = QPushButton( "Log Text", self ) self.btn.setToolTip( "This is a <b>QPushButton</b> widget" ) self.btn.resize( self.btn.sizeHint() ) self.btn.clicked.connect( self.logText ) self.lineedit = QLineEdit( "Hello World", self ) self.lineedit.setToolTip( "Type Something" ) layout = QVBoxLayout( self ) layout.addWidget( self.lineedit ) layout.addWidget( self.btn ) def logText( self ): Application.LogMessage( self.lineedit.text() )
def setupUi(self, parent): self.resize(275, 172) self.setWindowTitle('Convert units') self.layout = QVBoxLayout(parent) self.layout.setSizeConstraint(QLayout.SetFixedSize) align = (Qt.AlignRight | Qt.AlignTrailing | Qt.AlignVCenter) self.layout1 = QHBoxLayout() self.label1 = QLabel() self.label1.setMinimumSize(QSize(100, 0)) self.label1.setText('Convert from:') self.label1.setAlignment(align) self.layout1.addWidget(self.label1) self.source_units = QLineEdit() self.source_units.setReadOnly(True) self.layout1.addWidget(self.source_units) self.layout.addLayout(self.layout1) self.layout2 = QHBoxLayout() self.label2 = QLabel() self.label2.setMinimumSize(QSize(100, 0)) self.label2.setText('to:') self.label2.setAlignment(align) self.layout2.addWidget(self.label2) self.destination_units = QLineEdit() self.layout2.addWidget(self.destination_units) self.layout.addLayout(self.layout2) self.message = QLabel() self.message.setText('') self.message.setAlignment(Qt.AlignCenter) self.layout.addWidget(self.message) self.buttonBox = QDialogButtonBox() self.buttonBox.setOrientation(Qt.Horizontal) self.buttonBox.setStandardButtons(QDialogButtonBox.Ok) self.layout.addWidget(self.buttonBox) self.buttonBox.setEnabled(False) self.buttonBox.accepted.connect(self.accept) self.destination_units.textChanged.connect(self.check) self.setLayout(self.layout) self.destination_units.setFocus()
def __init__(self, parent, target, feat): super().__init__(parent) self._feat = feat layout = QHBoxLayout(self) if feat.keys: wid = QComboBox() if isinstance(feat.keys, dict): self._keys = list(feat.keys.keys()) else: self._keys = list(feat.keys) wid.addItems([str(key) for key in self._keys]) wid.currentIndexChanged.connect(self._combobox_changed) else: wid = QLineEdit() wid.textChanged.connect(self._lineedit_changed) layout.addWidget(wid) self._key_widget = wid wid = WidgetMixin.from_feat(feat) wid.bind_feat(feat) wid.feat_key = self._keys[0] wid.lantz_target = target layout.addWidget(wid) self._value_widget = wid
def __init__(self, argspec, parent=None, window_title='Function arguments', doc=None): super().__init__(parent) vlayout = QVBoxLayout(self) layout = QFormLayout() widgets = [] defaults = argspec.defaults if argspec.defaults else () defaults = ('', ) * (len(argspec.args[1:]) - len(defaults)) + defaults self.arguments = {} for arg, default in zip(argspec.args[1:], defaults): wid = QLineEdit(self) wid.setObjectName(arg) wid.setText(json.dumps(default)) self.arguments[arg] = default layout.addRow(arg, wid) widgets.append(wid) wid.textChanged.connect(self.on_widget_change(wid)) if doc and arg in doc: wid.setToolTip(doc[arg]) self.widgets = widgets buttonBox = QDialogButtonBox() buttonBox.setOrientation(Qt.Horizontal) buttonBox.setStandardButtons(QDialogButtonBox.Ok) buttonBox.setEnabled(True) buttonBox.accepted.connect(self.accept) vlayout.addLayout(layout) label = QLabel() label.setText('Values are decoded from text using as JSON.') vlayout.addWidget(label) vlayout.addWidget(buttonBox) self.buttonBox = buttonBox self.valid = {wid.objectName(): True for wid in self.widgets} self.setWindowTitle(window_title)
class UnitInputDialog(QDialog): """Dialog to select new units. Checks compatibility while typing and does not allow to continue if incompatible. Returns None if cancelled. :param units: current units. :param parent: parent widget. >>> new_units = UnitInputDialog.get_units('ms') """ def __init__(self, units, parent=None): super().__init__(parent) self.setupUi(parent) self.units = units self.source_units.setText(str(units)) def setupUi(self, parent): self.resize(275, 172) self.setWindowTitle('Convert units') self.layout = QVBoxLayout(parent) self.layout.setSizeConstraint(QLayout.SetFixedSize) align = (Qt.AlignRight | Qt.AlignTrailing | Qt.AlignVCenter) self.layout1 = QHBoxLayout() self.label1 = QLabel() self.label1.setMinimumSize(QSize(100, 0)) self.label1.setText('Convert from:') self.label1.setAlignment(align) self.layout1.addWidget(self.label1) self.source_units = QLineEdit() self.source_units.setReadOnly(True) self.layout1.addWidget(self.source_units) self.layout.addLayout(self.layout1) self.layout2 = QHBoxLayout() self.label2 = QLabel() self.label2.setMinimumSize(QSize(100, 0)) self.label2.setText('to:') self.label2.setAlignment(align) self.layout2.addWidget(self.label2) self.destination_units = QLineEdit() self.layout2.addWidget(self.destination_units) self.layout.addLayout(self.layout2) self.message = QLabel() self.message.setText('') self.message.setAlignment(Qt.AlignCenter) self.layout.addWidget(self.message) self.buttonBox = QDialogButtonBox() self.buttonBox.setOrientation(Qt.Horizontal) self.buttonBox.setStandardButtons(QDialogButtonBox.Ok) self.layout.addWidget(self.buttonBox) self.buttonBox.setEnabled(False) self.buttonBox.accepted.connect(self.accept) self.destination_units.textChanged.connect(self.check) self.setLayout(self.layout) self.destination_units.setFocus() def check(self): units = self.destination_units.text().strip() if not units: return try: new_units = Q_(1, units) factor = self.units.to(new_units).magnitude except LookupError or SyntaxError: self.message.setText('Cannot parse units') self.buttonBox.setEnabled(False) except ValueError: self.message.setText('Incompatible units') self.buttonBox.setEnabled(False) else: self.message.setText('factor {:f}'.format(factor)) self.buttonBox.setEnabled(True) @staticmethod def get_units(units): """Creates and display a UnitInputDialog and return new units. Return None if the user cancelled. """ dialog = UnitInputDialog(Q_(1, units.units)) if dialog.exec_(): return dialog.destination_units.text() return None