Bu bölüm Kullanıcı Arayüzdeki sürekliliği sağlamak amacıyla, kullanıcı ile iletişim kurmak için kullanılan metot ve elementleri gösterir.
Kullanıcı deneyimi açısından mesaj kutusu kullanmak yanlış olabilir. Küçük bir bilgi veya uyarı/hata mesajı çizgisi göstermek için QGIS mesaj çubuğu kullanmak genellikle en iyi seçenektir.
QGIS arayüz nesnesi için referansı kullanarak bir mesajı, mesaj çubuğundaki sonraki codla gösterebilirsiniz
from qgis.gui import QgsMessageBar
iface.messageBar().pushMessage("Error", "I'm sorry Dave, I'm afraid I can't do that", level=QgsMessageBar.CRITICAL)
Bunu sınırlı bir zamanda göstermek için süre ayarı koyabilirsiniz.
iface.messageBar().pushMessage("Error", "Ooops, the plugin is not working as it should", level=QgsMessageBar.CRITICAL, duration=3)
The examples above show an error bar, but the level parameter can be used to creating warning messages or info messages, using the QgsMessageBar.WARNING and QgsMessageBar.INFO constants respectively.
Mesaj çubuğuna Widgetlar eklenebilir örneğin daha fazla bilgi göstermek için bir buton
def showError():
pass
widget = iface.messageBar().createMessage("Missing Layers", "Show Me")
button = QPushButton(widget)
button.setText("Show Me")
button.pressed.connect(showError)
widget.layout().addWidget(button)
iface.messageBar().pushWidget(widget, QgsMessageBar.WARNING)
Ana QGIS penceresinde bir mesaj kutusu göstermek gereksizse veya pencerenizde mesaj kutusu göstermek istemiyorsanız kendi pencerenizde bir mesaj çubu kullanabilirsiniz.
class MyDialog(QDialog):
def __init__(self):
QDialog.__init__(self)
self.bar = QgsMessageBar()
self.bar.setSizePolicy( QSizePolicy.Minimum, QSizePolicy.Fixed )
self.setLayout(QGridLayout())
self.layout().setContentsMargins(0, 0, 0, 0)
self.buttonbox = QDialogButtonBox(QDialogButtonBox.Ok)
self.buttonbox.accepted.connect(self.run)
self.layout().addWidget(self.buttonbox, 0, 0, 2, 1)
self.layout().addWidget(self.bar, 0, 0, 1, 1)
def run(self):
self.bar.pushMessage("Hello", "World", level=QgsMessageBar.INFO)
ilerleme çubukları, gördüğümüz gibi, QGIS mesaj çubukları içine de konulabilir olduğundan, widgetları kabul eder. Konsolda deneyebileceğiniz kodları burada bulabilirsiniz.
import time
from PyQt4.QtGui import QProgressBar
from PyQt4.QtCore import *
progressMessageBar = iface.messageBar().createMessage("Doing something boring...")
progress = QProgressBar()
progress.setMaximum(10)
progress.setAlignment(Qt.AlignLeft|Qt.AlignVCenter)
progressMessageBar.layout().addWidget(progress)
iface.messageBar().pushWidget(progressMessageBar, iface.messageBar().INFO)
for i in range(10):
time.sleep(1)
progress.setValue(i + 1)
iface.messageBar().clearWidgets()
Also, you can use the built-in status bar to report progress, as in the next example
count = layers.featureCount()
for i, feature in enumerate(features):
#do something time-consuming here
...
percent = i / float(count) * 100
iface.mainWindow().statusBar().showMessage("Processed {} %".format(int(percent)))
iface.mainWindow().statusBar().clearMessage()
QGIS kayıt sistemini kodunuzun çalışması hakkındaki görmek istediğiniz tüm bilgileri kaydetmek için kullanabilirsiniz.
# You can optionally pass a 'tag' and a 'level' parameters
QgsMessageLog.logMessage("Your plugin code has been executed correctly", 'MyPlugin', QgsMessageLog.INFO)
QgsMessageLog.logMessage("Your plugin code might have some problems", level=QgsMessageLog.WARNING)
QgsMessageLog.logMessage("Your plugin code has crashed!", level=QgsMessageLog.CRITICAL)