def on_scale_changed(): print(scale_widget.scale(), QgsScaleWidget.toString(scale_widget.scale())) print(scale_widget.scaleString(), QgsScaleWidget.toDouble(scale_widget.scaleString())) print(scale_widget.showCurrentScaleButton()) print("Scale changed") iface.mapCanvas().zoomScale(1 / scale_widget.scale())
def __init__(self, gtomain, parent=None): super(GtoWidgetScale, self).__init__(parent) # QWidgetAction.__init__(self,parent) self.iface = gtomain.iface self.info = gtomain.info self.debug = gtomain.debug self.block = False try: self.canvas = self.iface.mapCanvas() # ui lay = QHBoxLayout(self) # ----- self.lblLayer = QLabel("Maßstab:") lay.addWidget(self.lblLayer) self.wid = QgsScaleWidget(self) self.wid.setMinimumWidth(120) lay.addWidget(self.wid) # ----- self.setLayout(lay) # signals self.canvas.scaleChanged.connect(self.scale_changed) self.wid.scaleChanged.connect(self.set_mapscale) # start self.scale_changed(self.canvas.scale()) except Exception as e: self.info.err(e)
class GtoWidgetScale(QWidget): def __init__(self, gtomain, parent=None): super(GtoWidgetScale, self).__init__(parent) # QWidgetAction.__init__(self,parent) self.iface = gtomain.iface self.info = gtomain.info self.debug = gtomain.debug self.block = False try: self.canvas = self.iface.mapCanvas() # ui lay = QHBoxLayout(self) # ----- self.lblLayer = QLabel("Maßstab:") lay.addWidget(self.lblLayer) self.wid = QgsScaleWidget(self) self.wid.setMinimumWidth(120) lay.addWidget(self.wid) # ----- self.setLayout(lay) # signals self.canvas.scaleChanged.connect(self.scale_changed) self.wid.scaleChanged.connect(self.set_mapscale) # start self.scale_changed(self.canvas.scale()) except Exception as e: self.info.err(e) def scale_changed(self, scale): try: # if self.debug: self.info.log("scale_changed", scale) # self.blockSignals(True) if not self.block: self.block = True self.wid.setScale(round(scale, 0)) self.block = False # self.blockSignals(False) except Exception as e: self.info.err(e) def set_mapscale(self, scale): try: # if self.debug: self.info.log("set_mapscale", scale) # self.blockSignals(True) if not self.block: self.block = True self.canvas.zoomScale(scale) self.block = False # self.blockSignals(False) except Exception as e: self.info.err(e)
def testNull(self): w = QgsScaleWidget() w.setScale(50) self.assertFalse(w.allowNull()) w.setNull() # no effect self.assertEqual(w.scale(), 50.0) self.assertFalse(w.isNull()) spy = QSignalSpy(w.scaleChanged) w.setAllowNull(True) self.assertTrue(w.allowNull()) w.setScaleString('') self.assertEqual(len(spy), 1) self.assertTrue(math.isnan(w.scale())) self.assertTrue(math.isnan(spy[-1][0])) self.assertTrue(w.isNull()) w.setScaleString(" ") self.assertTrue(math.isnan(w.scale())) self.assertTrue(w.isNull()) w.setScaleString('0.02') self.assertEqual(w.scale(), 50.0) self.assertEqual(len(spy), 2) self.assertEqual(spy[-1][0], 50.0) self.assertFalse(w.isNull()) w.setScaleString('') self.assertTrue(math.isnan(w.scale())) self.assertEqual(len(spy), 3) self.assertTrue(math.isnan(spy[-1][0])) self.assertTrue(w.isNull()) w.setScaleString('0.02') self.assertEqual(w.scale(), 50.0) self.assertEqual(len(spy), 4) self.assertEqual(spy[-1][0], 50.0) self.assertFalse(w.isNull()) w.setNull() self.assertTrue(math.isnan(w.scale())) self.assertEqual(len(spy), 5) self.assertTrue(math.isnan(spy[-1][0])) self.assertTrue(w.isNull()) w.setAllowNull(False) self.assertFalse(w.allowNull())
def testBasic(self): w = QgsScaleWidget() spy = QSignalSpy(w.scaleChanged) w.setScaleString('1:2345') self.assertEqual(w.scaleString(), '1:2,345') self.assertEqual(w.scale(), 2345) self.assertEqual(len(spy), 1) self.assertEqual(spy[-1][0], 2345) w.setScaleString('0.02') self.assertEqual(w.scaleString(), '1:50') self.assertEqual(w.scale(), 50) self.assertEqual(len(spy), 2) self.assertEqual(spy[-1][0], 50) w.setScaleString('1:4,000') self.assertEqual(w.scaleString(), '1:4,000') self.assertEqual(w.scale(), 4000) self.assertEqual(len(spy), 3) self.assertEqual(spy[-1][0], 4000)
# coding: utf-8 from PyQt4.QtGui import QDialog from qgis.gui import QgsScaleWidget from qgis.utils import iface new_dialog = QDialog() new_dialog.resize(150, 50) scale_widget = QgsScaleWidget(new_dialog) def on_scale_changed(): print(scale_widget.scale(), QgsScaleWidget.toString(scale_widget.scale())) print(scale_widget.scaleString(), QgsScaleWidget.toDouble(scale_widget.scaleString())) print(scale_widget.showCurrentScaleButton()) print("Scale changed") iface.mapCanvas().zoomScale(1 / scale_widget.scale()) scale_widget.scaleChanged.connect(on_scale_changed) new_dialog.show() scale_widget.updateScales([u'1:1\xa0000\xa0000', u'1:100\xa0000'])
def setupUi(self, Form): Form.setObjectName("Form") Form.resize(858, 36) sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(Form.sizePolicy().hasHeightForWidth()) Form.setSizePolicy(sizePolicy) Form.setMinimumSize(QtCore.QSize(0, 20)) Form.setMaximumSize(QtCore.QSize(900, 50)) Form.setToolTip("") self.gridLayout = QtWidgets.QGridLayout(Form) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setSpacing(0) self.gridLayout.setObjectName("gridLayout") self.splitter = QtWidgets.QSplitter(Form) self.splitter.setOrientation(QtCore.Qt.Horizontal) self.splitter.setObjectName("splitter") self.mMapLayerComboBox = QgsMapLayerComboBox(self.splitter) sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.mMapLayerComboBox.sizePolicy().hasHeightForWidth()) self.mMapLayerComboBox.setSizePolicy(sizePolicy) self.mMapLayerComboBox.setMinimumSize(QtCore.QSize(0, 20)) self.mMapLayerComboBox.setMaximumSize(QtCore.QSize(16777215, 32)) self.mMapLayerComboBox.setFilters( core.QgsMapLayerProxyModel.HasGeometry | core.QgsMapLayerProxyModel.LineLayer | core.QgsMapLayerProxyModel.NoGeometry | core.QgsMapLayerProxyModel.PluginLayer | core.QgsMapLayerProxyModel.PointLayer | core.QgsMapLayerProxyModel.PolygonLayer | core.QgsMapLayerProxyModel.VectorLayer) self.mMapLayerComboBox.setObjectName("mMapLayerComboBox") self.refreshPushButton = QtWidgets.QPushButton(self.splitter) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.refreshPushButton.sizePolicy().hasHeightForWidth()) self.refreshPushButton.setSizePolicy(sizePolicy) self.refreshPushButton.setMinimumSize(QtCore.QSize(24, 24)) self.refreshPushButton.setMaximumSize(QtCore.QSize(24, 24)) self.refreshPushButton.setText("") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/plugins/DsgTools/icons/reload.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.refreshPushButton.setIcon(icon) self.refreshPushButton.setIconSize(QtCore.QSize(16, 16)) self.refreshPushButton.setObjectName("refreshPushButton") self.zoomPercentageSpinBox = QgsDoubleSpinBox(self.splitter) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.zoomPercentageSpinBox.sizePolicy().hasHeightForWidth()) self.zoomPercentageSpinBox.setSizePolicy(sizePolicy) self.zoomPercentageSpinBox.setMinimumSize(QtCore.QSize(0, 20)) self.zoomPercentageSpinBox.setMaximumSize( QtCore.QSize(16777215, 16777215)) self.zoomPercentageSpinBox.setObjectName("zoomPercentageSpinBox") self.mScaleWidget = QgsScaleWidget(self.splitter) sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.mScaleWidget.sizePolicy().hasHeightForWidth()) self.mScaleWidget.setSizePolicy(sizePolicy) self.mScaleWidget.setMinimumSize(QtCore.QSize(0, 20)) self.mScaleWidget.setMaximumSize(QtCore.QSize(16194919, 32)) self.mScaleWidget.setShowCurrentScaleButton(True) self.mScaleWidget.setObjectName("mScaleWidget") self.idSpinBox = QtWidgets.QSpinBox(self.splitter) sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.idSpinBox.sizePolicy().hasHeightForWidth()) self.idSpinBox.setSizePolicy(sizePolicy) self.idSpinBox.setMinimumSize(QtCore.QSize(40, 20)) self.idSpinBox.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.idSpinBox.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.idSpinBox.setSuffix("") self.idSpinBox.setObjectName("idSpinBox") self.backInspectButton = QtWidgets.QPushButton(self.splitter) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.backInspectButton.sizePolicy().hasHeightForWidth()) self.backInspectButton.setSizePolicy(sizePolicy) self.backInspectButton.setMinimumSize(QtCore.QSize(24, 24)) self.backInspectButton.setMaximumSize(QtCore.QSize(24, 24)) self.backInspectButton.setText("") icon = QtGui.QIcon() icon.addPixmap( QtGui.QPixmap(":/plugins/DsgTools/icons/backInspect.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.backInspectButton.setIcon(icon) self.backInspectButton.setIconSize(QtCore.QSize(16, 16)) self.backInspectButton.setObjectName("backInspectButton") self.nextInspectButton = QtWidgets.QPushButton(self.splitter) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.nextInspectButton.sizePolicy().hasHeightForWidth()) self.nextInspectButton.setSizePolicy(sizePolicy) self.nextInspectButton.setMinimumSize(QtCore.QSize(24, 24)) self.nextInspectButton.setMaximumSize(QtCore.QSize(24, 24)) self.nextInspectButton.setText("") icon1 = QtGui.QIcon() icon1.addPixmap( QtGui.QPixmap(":/plugins/DsgTools/icons/nextInspect.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.nextInspectButton.setIcon(icon1) self.nextInspectButton.setIconSize(QtCore.QSize(16, 16)) self.nextInspectButton.setObjectName("nextInspectButton") self.mFieldExpressionWidget = QgsFieldExpressionWidget(self.splitter) sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.mFieldExpressionWidget.sizePolicy().hasHeightForWidth()) self.mFieldExpressionWidget.setSizePolicy(sizePolicy) self.mFieldExpressionWidget.setMinimumSize(QtCore.QSize(0, 20)) self.mFieldExpressionWidget.setObjectName("mFieldExpressionWidget") self.gridLayout.addWidget(self.splitter, 0, 2, 1, 1) self.inspectPushButton = QtWidgets.QPushButton(Form) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.inspectPushButton.sizePolicy().hasHeightForWidth()) self.inspectPushButton.setSizePolicy(sizePolicy) self.inspectPushButton.setMinimumSize(QtCore.QSize(24, 24)) self.inspectPushButton.setMaximumSize(QtCore.QSize(24, 24)) self.inspectPushButton.setText("") icon2 = QtGui.QIcon() icon2.addPixmap( QtGui.QPixmap(":/plugins/DsgTools/icons/inspectFeatures.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.inspectPushButton.setIcon(icon2) self.inspectPushButton.setIconSize(QtCore.QSize(16, 16)) self.inspectPushButton.setCheckable(True) self.inspectPushButton.setObjectName("inspectPushButton") self.gridLayout.addWidget(self.inspectPushButton, 0, 0, 1, 1) spacerItem = QtWidgets.QSpacerItem(10, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.gridLayout.addItem(spacerItem, 0, 1, 1, 1) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form)