From f7bdc2acff3c13a6d632c28c4569690ab106eed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?= Date: Fri, 18 Aug 2017 14:48:52 +0200 Subject: Import Upstream version 0.5.0+dfsg --- examples/simplewidget.py | 108 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100755 examples/simplewidget.py (limited to 'examples/simplewidget.py') diff --git a/examples/simplewidget.py b/examples/simplewidget.py new file mode 100755 index 0000000..605beb3 --- /dev/null +++ b/examples/simplewidget.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python +# coding: utf-8 +# /*########################################################################## +# +# Copyright (c) 2016-2017 European Synchrotron Radiation Facility +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# ###########################################################################*/ +"""This script shows a gallery of simple widgets provided by silx. + +It shows the following widgets: + +- :class:WaitingPushButton: A button with a progress-like waiting animated icon +""" + +__authors__ = ["V. Valls"] +__license__ = "MIT" +__date__ = "12/01/2017" + +import sys +from silx.gui import qt +from silx.gui.widgets.WaitingPushButton import WaitingPushButton +from silx.gui.widgets.ThreadPoolPushButton import ThreadPoolPushButton + + +class SimpleWidgetExample(qt.QMainWindow): + """This windows shows simple widget provided by silx.""" + + def __init__(self): + """Constructor""" + qt.QMainWindow.__init__(self) + self.setWindowTitle("Silx simple widget example") + + main_panel = qt.QWidget(self) + main_panel.setLayout(qt.QVBoxLayout()) + + main_panel.layout().addWidget(qt.QLabel("WaitingPushButton")) + main_panel.layout().addWidget(self.createWaitingPushButton()) + main_panel.layout().addWidget(self.createWaitingPushButton2()) + + main_panel.layout().addWidget(qt.QLabel("ThreadPoolPushButton")) + main_panel.layout().addWidget(self.createThreadPoolPushButton()) + + self.setCentralWidget(main_panel) + + def createWaitingPushButton(self): + widget = WaitingPushButton(text="Push me and wait for ever") + widget.clicked.connect(widget.swapWaiting) + return widget + + def createWaitingPushButton2(self): + widget = WaitingPushButton(text="Push me") + widget.setDisabledWhenWaiting(False) + widget.clicked.connect(widget.swapWaiting) + return widget + + def printResult(self, result): + print(result) + + def printError(self, result): + print("Error") + print(result) + + def takesTimeToComputePow(self, a, b): + qt.QThread.sleep(2) + return a ** b + + def createThreadPoolPushButton(self): + widget = ThreadPoolPushButton(text="Compute 2^16") + widget.setCallable(self.takesTimeToComputePow, 2, 16) + widget.succeeded.connect(self.printResult) + widget.failed.connect(self.printError) + return widget + + +def main(): + """ + Main function + """ + app = qt.QApplication([]) + sys.excepthook = qt.exceptionHandler + window = SimpleWidgetExample() + window.show() + result = app.exec_() + # remove ending warnings relative to QTimer + app.deleteLater() + sys.excepthook = sys.__excepthook__ + sys.exit(result) + + +main() -- cgit v1.2.3