本文整理汇总了Python中qgis.PyQt.QtCore.QTimer.setSingleShot方法的典型用法代码示例。如果您正苦于以下问题:Python QTimer.setSingleShot方法的具体用法?Python QTimer.setSingleShot怎么用?Python QTimer.setSingleShot使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.PyQt.QtCore.QTimer
的用法示例。
在下文中一共展示了QTimer.setSingleShot方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_link_feature
# 需要导入模块: from qgis.PyQt.QtCore import QTimer [as 别名]
# 或者: from qgis.PyQt.QtCore.QTimer import setSingleShot [as 别名]
def test_link_feature(self):
"""
Check if an existing feature can be linked
"""
wrapper = self.createWrapper(self.vl_a, '"name"=\'Douglas Adams\'') # NOQA
f = QgsFeature(self.vl_b.fields())
f.setAttributes([self.vl_b.dataProvider().defaultValueClause(0), 'The Hitchhiker\'s Guide to the Galaxy'])
self.vl_b.addFeature(f)
def choose_linked_feature():
dlg = QApplication.activeModalWidget()
dlg.setSelectedFeatures([f.id()])
dlg.accept()
btn = self.widget.findChild(QToolButton, 'mLinkFeatureButton')
timer = QTimer()
timer.setSingleShot(True)
timer.setInterval(0) # will run in the event loop as soon as it's processed when the dialog is opened
timer.timeout.connect(choose_linked_feature)
timer.start()
btn.click()
# magically the above code selects the feature here...
link_feature = next(self.vl_link.getFeatures(QgsFeatureRequest().setFilterExpression('"fk_book"={}'.format(f[0]))))
self.assertIsNotNone(link_feature[0])
self.assertEqual(self.table_view.model().rowCount(), 1)
示例2: Downloader
# 需要导入模块: from qgis.PyQt.QtCore import QTimer [as 别名]
# 或者: from qgis.PyQt.QtCore.QTimer import setSingleShot [as 别名]
class Downloader(QObject):
NOT_FOUND = 0
NO_ERROR = 0
TIMEOUT_ERROR = 4
UNKNOWN_ERROR = -1
replyFinished = pyqtSignal(str, int, int)
def __init__(self, parent=None):
QObject.__init__(self, parent)
self.queue = []
self.redirected_urls = {}
self.requestingUrls = []
self.replies = []
self.eventLoop = QEventLoop()
self.sync = False
self.fetchedFiles = {}
self.clearCounts()
self.timer = QTimer()
self.timer.setSingleShot(True)
self.timer.timeout.connect(self.fetchTimedOut)
# network settings
self.userAgent = "QuickMapServices tile layer (+https://github.com/nextgis/quickmapservices)"
self.max_connection = 4
self.default_cache_expiration = 24
self.errorStatus = Downloader.NO_ERROR
def clearCounts(self):
self.fetchSuccesses = 0
self.fetchErrors = 0
self.cacheHits = 0
def fetchTimedOut(self):
self.log("Downloader.timeOut()")
self.abort()
self.errorStatus = Downloader.TIMEOUT_ERROR
def abort(self):
# clear queue and abort sent requests
self.queue = []
self.timer.stop()
for reply in self.replies:
reply.abort()
self.errorStatus = Downloader.UNKNOWN_ERROR
def replyFinishedSlot(self):
reply = self.sender()
url = reply.request().url().toString()
self.log("replyFinishedSlot: %s" % url)
if not url in self.fetchedFiles:
self.fetchedFiles[url] = None
self.requestingUrls.remove(url)
self.replies.remove(reply)
isFromCache = 0
httpStatusCode = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
if reply.error() == QNetworkReply.NoError:
if httpStatusCode == 301:
new_url = str(reply.rawHeader("Location"))
self.addToQueue(new_url, url)
else:
self.fetchSuccesses += 1
if reply.attribute(QNetworkRequest.SourceIsFromCacheAttribute):
self.cacheHits += 1
isFromCache = 1
elif not reply.hasRawHeader("Cache-Control"):
cache = QgsNetworkAccessManager.instance().cache()
if cache:
metadata = cache.metaData(reply.request().url())
# self.log("Expiration date: " + metadata.expirationDate().toString().encode("utf-8"))
if metadata.expirationDate().isNull():
metadata.setExpirationDate(
QDateTime.currentDateTime().addSecs(self.default_cache_expiration * 60 * 60))
cache.updateMetaData(metadata)
self.log(
"Default expiration date has been set: %s (%d h)" % (url, self.default_cache_expiration))
if reply.isReadable():
data = reply.readAll()
if self.redirected_urls.has_key(url):
url = self.redirected_urls[url]
self.fetchedFiles[url] = data
else:
qDebug("http status code: " + str(httpStatusCode))
# self.emit(SIGNAL('replyFinished(QString, int, int)'), url, reply.error(), isFromCache)
self.replyFinished.emit(url, reply.error(), isFromCache)
else:
if self.sync and httpStatusCode == 404:
self.fetchedFiles[url] = self.NOT_FOUND
self.fetchErrors += 1
if self.errorStatus == self.NO_ERROR:
self.errorStatus = self.UNKNOWN_ERROR
reply.deleteLater()
#.........这里部分代码省略.........
示例3: OpenlayersController
# 需要导入模块: from qgis.PyQt.QtCore import QTimer [as 别名]
# 或者: from qgis.PyQt.QtCore.QTimer import setSingleShot [as 别名]
class OpenlayersController(QObject):
"""
Helper class that deals with QWebPage.
The object lives in GUI thread, its request() slot is asynchronously called
from worker thread.
See https://github.com/wonder-sk/qgis-mtr-example-plugin for basic example
1. Load Web Page with OpenLayers map
2. Update OL map extend according to QGIS canvas extent
"""
# signal that reports to the worker thread that the image is ready
finished = pyqtSignal()
def __init__(self, parent, context, webPage, layerType):
QObject.__init__(self, parent)
debug("OpenlayersController.__init__", 3)
self.context = context
self.layerType = layerType
self.img = QImage()
self.page = webPage
self.page.loadFinished.connect(self.pageLoaded)
# initial size for map
self.page.setViewportSize(QSize(1, 1))
self.timerMapReady = QTimer()
self.timerMapReady.setSingleShot(True)
self.timerMapReady.setInterval(20)
self.timerMapReady.timeout.connect(self.checkMapReady)
self.timer = QTimer()
self.timer.setInterval(100)
self.timer.timeout.connect(self.checkMapUpdate)
self.timerMax = QTimer()
self.timerMax.setSingleShot(True)
# TODO: different timeouts for map types
self.timerMax.setInterval(2500)
self.timerMax.timeout.connect(self.mapTimeout)
@pyqtSlot()
def request(self):
debug("[GUI THREAD] Processing request", 3)
self.cancelled = False
if not self.page.loaded:
self.init_page()
else:
self.setup_map()
def init_page(self):
url = self.layerType.html_url()
debug("page file: %s" % url)
self.page.mainFrame().load(QUrl(url))
# wait for page to finish loading
debug("OpenlayersWorker waiting for page to load", 3)
def pageLoaded(self):
debug("[GUI THREAD] pageLoaded", 3)
if self.cancelled:
self.emitErrorImage()
return
# wait until OpenLayers map is ready
self.checkMapReady()
def checkMapReady(self):
debug("[GUI THREAD] checkMapReady", 3)
if self.page.mainFrame().evaluateJavaScript("map != undefined"):
# map ready
self.page.loaded = True
self.setup_map()
else:
# wait for map
self.timerMapReady.start()
def setup_map(self):
rendererContext = self.context
# FIXME: self.mapSettings.outputDpi()
self.outputDpi = rendererContext.painter().device().logicalDpiX()
debug(" extent: %s" % rendererContext.extent().toString(), 3)
debug(" center: %lf, %lf" % (rendererContext.extent().center().x(),
rendererContext.extent().center().y()), 3)
debug(" size: %d, %d" % (
rendererContext.painter().viewport().size().width(),
rendererContext.painter().viewport().size().height()), 3)
debug(" logicalDpiX: %d" % rendererContext.painter().
device().logicalDpiX(), 3)
debug(" outputDpi: %lf" % self.outputDpi)
debug(" mapUnitsPerPixel: %f" % rendererContext.mapToPixel().
mapUnitsPerPixel(), 3)
# debug(" rasterScaleFactor: %s" % str(rendererContext.
# rasterScaleFactor()), 3)
# debug(" outputSize: %d, %d" % (self.iface.mapCanvas().mapRenderer().
# outputSize().width(),
# self.iface.mapCanvas().mapRenderer().
# outputSize().height()), 3)
#.........这里部分代码省略.........
示例4: OpenLayersOverviewWidget
# 需要导入模块: from qgis.PyQt.QtCore import QTimer [as 别名]
# 或者: from qgis.PyQt.QtCore.QTimer import setSingleShot [as 别名]
class OpenLayersOverviewWidget(QWidget, Ui_Form):
def __init__(self, iface, dockwidget, olLayerTypeRegistry):
QWidget.__init__(self)
Ui_Form.__init__(self)
self.setupUi(self)
self.__canvas = iface.mapCanvas()
self.__dockwidget = dockwidget
self.__olLayerTypeRegistry = olLayerTypeRegistry
self.__initLayerOL = False
self.__fileNameImg = ''
self.__srsOL = QgsCoordinateReferenceSystem(
3857, QgsCoordinateReferenceSystem.EpsgCrsId)
self.__marker = MarkerCursor(self.__canvas, self.__srsOL)
self.__manager = None # Need persist for PROXY
bindogr.initOgr()
self.__init()
def __init(self):
self.checkBoxHideCross.setEnabled(False)
self.__populateTypeMapGUI()
self.__populateButtonBox()
self.__registerObjJS()
self.lbStatusRead.setVisible(False)
self.__setConnections()
self.__timerMapReady = QTimer()
self.__timerMapReady.setSingleShot(True)
self.__timerMapReady.setInterval(20)
self.__timerMapReady.timeout.connect(self.__checkMapReady)
def __del__(self):
self.__marker.reset()
# Disconnect Canvas
# Canvas
QgsMapCanvas.extentsChanged.disconnect(self.__canvas)
# Doc WidgetparentWidget
QDockWidget.visibilityChanged.disconnect(self.__dockwidget)
def __populateButtonBox(self):
pathPlugin = "%s%s%%s" % (os.path.dirname(__file__), os.path.sep)
self.pbRefresh.setIcon(QIcon(pathPlugin % "mActionDraw.png"))
self.pbRefresh.setEnabled(False)
self.pbAddRaster.setIcon(QIcon(pathPlugin %
"mActionAddRasterLayer.png"))
self.pbAddRaster.setEnabled(False)
self.pbCopyKml.setIcon(QIcon(pathPlugin % "kml.png"))
self.pbCopyKml.setEnabled(False)
self.pbSaveImg.setIcon(QIcon(pathPlugin % "mActionSaveMapAsImage.png"))
self.pbSaveImg.setEnabled(False)
def __populateTypeMapGUI(self):
pathPlugin = "%s%s%%s" % (os.path.dirname(__file__), os.path.sep)
totalLayers = len(self.__olLayerTypeRegistry.types())
for id in range(totalLayers):
layer = self.__olLayerTypeRegistry.getById(id)
name = str(layer.displayName)
icon = QIcon(pathPlugin % layer.groupIcon)
self.comboBoxTypeMap.addItem(icon, name, id)
def __setConnections(self):
# Check Box
self.checkBoxEnableMap.stateChanged.connect(
self.__signal_checkBoxEnableMap_stateChanged)
self.checkBoxHideCross.stateChanged.connect(
self.__signal_checkBoxHideCross_stateChanged)
# comboBoxTypeMap
self.comboBoxTypeMap.currentIndexChanged.connect(
self.__signal_comboBoxTypeMap_currentIndexChanged)
# Canvas
self.__canvas.extentsChanged.connect(
self.__signal_canvas_extentsChanged)
# Doc WidgetparentWidget
self.__dockwidget.visibilityChanged.connect(
self.__signal_DocWidget_visibilityChanged)
# WebView Map
self.webViewMap.page().mainFrame().javaScriptWindowObjectCleared.connect(
self.__registerObjJS)
# Push Button
self.pbRefresh.clicked.connect(
self.__signal_pbRefresh_clicked)
self.pbAddRaster.clicked.connect(
self.__signal_pbAddRaster_clicked)
self.pbCopyKml.clicked.connect(
self.__signal_pbCopyKml_clicked)
self.pbSaveImg.clicked.connect(
self.__signal_pbSaveImg_clicked)
def __registerObjJS(self):
self.webViewMap.page().mainFrame().addToJavaScriptWindowObject(
"MarkerCursorQGis", self.__marker)
def __signal_checkBoxEnableMap_stateChanged(self, state):
enable = False
if state == Qt.Unchecked:
self.__marker.reset()
else:
if self.__canvas.layerCount() == 0:
QMessageBox.warning(self, QApplication.translate(
"OpenLayersOverviewWidget",
#.........这里部分代码省略.........
示例5: TimeManagerGuiControl
# 需要导入模块: from qgis.PyQt.QtCore import QTimer [as 别名]
# 或者: from qgis.PyQt.QtCore.QTimer import setSingleShot [as 别名]
class TimeManagerGuiControl(QObject):
"""This class controls all plugin-related GUI elements. Emitted signals are defined here."""
showOptions = pyqtSignal()
signalExportVideo = pyqtSignal(str, int, bool, bool, bool)
toggleTime = pyqtSignal()
toggleArchaeology = pyqtSignal()
back = pyqtSignal()
forward = pyqtSignal()
play = pyqtSignal()
signalCurrentTimeUpdated = pyqtSignal(QDateTime)
signalSliderTimeChanged = pyqtSignal(float)
signalTimeFrameType = pyqtSignal(str)
signalTimeFrameSize = pyqtSignal(int)
signalSaveOptions = pyqtSignal()
signalArchDigitsSpecified = pyqtSignal(int)
signalArchCancelled = pyqtSignal()
def __init__(self, iface, model):
"""Initialize the GUI control"""
QObject.__init__(self)
self.iface = iface
self.model = model
self.optionsDialog = None
self.path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'ui')
# load the form
self.dock = uic.loadUi(os.path.join(self.path, DOCK_WIDGET_FILE))
self.iface.addDockWidget(Qt.BottomDockWidgetArea, self.dock)
self.dock.pushButtonExportVideo.setEnabled(False) # only enabled if there are managed layers
self.dock.pushButtonOptions.clicked.connect(self.optionsClicked)
self.dock.pushButtonExportVideo.clicked.connect(self.exportVideoClicked)
self.dock.pushButtonToggleTime.clicked.connect(self.toggleTimeClicked)
self.dock.pushButtonArchaeology.clicked.connect(self.archaeologyClicked)
self.dock.pushButtonBack.clicked.connect(self.backClicked)
self.dock.pushButtonForward.clicked.connect(self.forwardClicked)
self.dock.pushButtonPlay.clicked.connect(self.playClicked)
self.dock.dateTimeEditCurrentTime.dateTimeChanged.connect(self.currentTimeChangedDateText)
# self.dock.horizontalTimeSlider.valueChanged.connect(self.currentTimeChangedSlider)
self.sliderTimer = QTimer(self)
self.sliderTimer.setInterval(250)
self.sliderTimer.setSingleShot(True)
self.sliderTimer.timeout.connect(self.currentTimeChangedSlider)
self.dock.horizontalTimeSlider.valueChanged.connect(self.startTimer)
self.dock.comboBoxTimeExtent.currentIndexChanged[str].connect(self.currentTimeFrameTypeChanged)
self.dock.spinBoxTimeExtent.valueChanged.connect(self.currentTimeFrameSizeChanged)
# this signal is responsible for rendering the label
self.iface.mapCanvas().renderComplete.connect(self.renderLabel)
# create shortcuts
self.focusSC = QShortcut(QKeySequence("Ctrl+Space"), self.dock)
self.focusSC.activated.connect(self.dock.horizontalTimeSlider.setFocus)
# put default values
self.dock.horizontalTimeSlider.setMinimum(conf.MIN_TIMESLIDER_DEFAULT)
self.dock.horizontalTimeSlider.setMaximum(conf.MAX_TIMESLIDER_DEFAULT)
self.dock.dateTimeEditCurrentTime.setMinimumDate(MIN_QDATE)
self.showLabel = conf.DEFAULT_SHOW_LABEL
self.exportEmpty = conf.DEFAULT_EXPORT_EMPTY
self.labelOptions = TimestampLabelConfig(self.model)
# placeholders for widgets that are added dynamically
self.bcdateSpinBox = None
# add to plugins toolbar
try:
self.action = QAction(QCoreApplication.translate("TimeManagerGuiControl", "Toggle visibility"), self.iface.mainWindow())
self.action.triggered.connect(self.toggleDock)
self.iface.addPluginToMenu(QCoreApplication.translate("TimeManagerGuiControl", "&TimeManager"), self.action)
except Exception as e:
pass # OK for testing
def startTimer(self):
self.sliderTimer.start()
def getLabelFormat(self):
return self.labelOptions.fmt
def getLabelFont(self):
return self.labelOptions.font
def getLabelSize(self):
return self.labelOptions.size
def getLabelColor(self):
return self.labelOptions.color
def getLabelBgColor(self):
return self.labelOptions.bgcolor
def getLabelPlacement(self):
return self.labelOptions.placement
def setLabelFormat(self, fmt):
if not fmt:
return
#.........这里部分代码省略.........
示例6: QmsServiceToolbox
# 需要导入模块: from qgis.PyQt.QtCore import QTimer [as 别名]
# 或者: from qgis.PyQt.QtCore.QTimer import setSingleShot [as 别名]
class QmsServiceToolbox(QDockWidget, FORM_CLASS):
def __init__(self, iface):
QDockWidget.__init__(self, iface.mainWindow())
self.setupUi(self)
self.newsFrame.setVisible(False)
self.iface = iface
self.search_threads = None # []
self.extent_renderer = RubberBandResultRenderer()
self.cmbStatusFilter.addItem(self.tr('All'), STATUS_FILTER_ALL)
self.cmbStatusFilter.addItem(self.tr('Valid'), STATUS_FILTER_ONLY_WORKS)
self.cmbStatusFilter.currentIndexChanged.connect(self.start_search)
if hasattr(self.txtSearch, 'setPlaceholderText'):
self.txtSearch.setPlaceholderText(self.tr("Search string..."))
self.delay_timer = QTimer(self)
self.delay_timer.setSingleShot(True)
self.delay_timer.setInterval(250)
self.delay_timer.timeout.connect(self.start_search)
self.txtSearch.textChanged.connect(self.delay_timer.start)
self.btnFilterByExtent.toggled.connect(self.toggle_filter_button)
self.one_process_work = QMutex()
self.add_last_used_services()
self.show_news()
def show_news(self):
client = Client()
client.set_proxy(*QGISSettings.get_qgis_proxy())
qms_news = client.get_news()
if qms_news is None:
self.newsFrame.setVisible(False)
return
news = News(qms_news)
if news.is_time_to_show():
self.newsLabel.setText(news.html)
self.newsFrame.setVisible(True)
else:
self.newsFrame.setVisible(False)
def toggle_filter_button(self, checked):
self.txtSearch.setDisabled(checked)
if checked:
self.iface.mapCanvas().extentsChanged.connect(self.start_search)
self.iface.mapCanvas().destinationCrsChanged.connect(self.start_search)
self.start_search()
else:
self.iface.mapCanvas().extentsChanged.disconnect(self.start_search)
self.iface.mapCanvas().destinationCrsChanged.disconnect(self.start_search)
def start_search(self):
search_text = None
geom_filter = None
# status filter
status_filter = None
sel_value = self.cmbStatusFilter.itemData(self.cmbStatusFilter.currentIndex())
if sel_value != STATUS_FILTER_ALL:
status_filter = sel_value
if not self.btnFilterByExtent.isChecked():
# text search
search_text = unicode(self.txtSearch.text())
if not search_text:
self.lstSearchResult.clear()
# self.clearSearchResult()
self.add_last_used_services()
return
else:
# extent filter
extent = self.iface.mapCanvas().extent()
map_crs = getCanvasDestinationCrs(self.iface)
if map_crs.postgisSrid() != 4326:
crsDest = QgsCoordinateReferenceSystem(4326) # WGS 84
xform = QgsCoordinateTransform(map_crs, crsDest)
extent = xform.transform(extent)
geom_filter = extent.asWktPolygon()
if self.search_threads:
self.search_threads.data_downloaded.disconnect()
self.search_threads.search_finished.disconnect()
self.search_threads.stop()
self.search_threads.wait()
self.lstSearchResult.clear()
# self.clearSearchResult()
searcher = SearchThread(search_text,
self.one_process_work,
parent=self.iface.mainWindow(),
geom_filter=geom_filter,
status_filter=status_filter)
#.........这里部分代码省略.........
示例7: AutoSuggest
# 需要导入模块: from qgis.PyQt.QtCore import QTimer [as 别名]
# 或者: from qgis.PyQt.QtCore.QTimer import setSingleShot [as 别名]
class AutoSuggest(QObject):
def __init__(self, geturl_func, parseresult_func, parent = None):
QObject.__init__(self, parent)
self.geturl_func = geturl_func
self.parseresult_func = parseresult_func
self.editor = parent
self.networkManager = QNetworkAccessManager()
self.selectedObject = None
self.isUnloaded = False
self.popup = QTreeWidget(parent)
#self.popup.setColumnCount(2)
self.popup.setColumnCount(1)
self.popup.setUniformRowHeights(True)
self.popup.setRootIsDecorated(False)
self.popup.setEditTriggers(QTreeWidget.NoEditTriggers)
self.popup.setSelectionBehavior(QTreeWidget.SelectRows)
self.popup.setFrameStyle(QFrame.Box | QFrame.Plain)
self.popup.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.popup.header().hide()
self.popup.installEventFilter(self)
self.popup.setMouseTracking(True)
#self.connect(self.popup, SIGNAL("itemClicked(QTreeWidgetItem*, int)"),
# self.doneCompletion)
self.popup.itemClicked.connect( self.doneCompletion )
self.popup.setWindowFlags(Qt.Popup)
self.popup.setFocusPolicy(Qt.NoFocus)
self.popup.setFocusProxy(parent)
self.timer = QTimer(self)
self.timer.setSingleShot(True)
self.timer.setInterval(500)
#self.connect(self.timer, SIGNAL("timeout()"), self.autoSuggest)
self.timer.timeout.connect( self.autoSuggest )
#self.connect(self.editor, SIGNAL("textEdited(QString)"), self.timer, SLOT("start()"))
#self.editor.textEdited.connect( self.timer.start )
self.editor.textEdited.connect( self.timer.start )
#self.editor.textChanged.connect( self.timer.start )
#self.connect(self.networkManager, SIGNAL("finished(QNetworkReply*)"),
# self.handleNetworkData)
self.networkManager.finished.connect( self.handleNetworkData )
def eventFilter(self, obj, ev):
if obj != self.popup:
return False
if ev.type() == QEvent.MouseButtonPress:
self.popup.hide()
self.editor.setFocus()
return True
if ev.type() == QEvent.KeyPress:
consumed = False
key = ev.key()
if key == Qt.Key_Enter or key == Qt.Key_Return:
self.doneCompletion()
consumed = True
elif key == Qt.Key_Escape:
self.editor.setFocus()
self.popup.hide()
consumed = True
elif key in (Qt.Key_Up, Qt.Key_Down, Qt.Key_Home, Qt.Key_End,
Qt.Key_PageUp, Qt.Key_PageDown):
pass
else:
self.editor.setFocus()
self.editor.event(ev)
self.popup.hide()
return consumed
return False
def showCompletion(self, rows):
# Rows is an iterable of tuples like [("text",object1),("text2", object2),...]
pal = self.editor.palette()
color = pal.color(QPalette.Disabled, QPalette.WindowText)
self.popup.setUpdatesEnabled(False)
self.popup.clear()
if rows is None or len( rows ) < 1:
return
for row in rows:
item = QTreeWidgetItem(self.popup)
item.setText(0, row[0])
#item.setText(1, hit['type'])
item.setTextAlignment(1, Qt.AlignRight)
item.setForeground(1, color)
#.........这里部分代码省略.........