aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2/doc/tutorials/basictutorial
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside2/doc/tutorials/basictutorial')
-rw-r--r--sources/pyside2/doc/tutorials/basictutorial/clickablebutton.rst90
-rw-r--r--sources/pyside2/doc/tutorials/basictutorial/dialog.rst145
-rw-r--r--sources/pyside2/doc/tutorials/basictutorial/qml.rst63
-rw-r--r--sources/pyside2/doc/tutorials/basictutorial/uifiles.rst174
-rw-r--r--sources/pyside2/doc/tutorials/basictutorial/widgets.rst39
5 files changed, 0 insertions, 511 deletions
diff --git a/sources/pyside2/doc/tutorials/basictutorial/clickablebutton.rst b/sources/pyside2/doc/tutorials/basictutorial/clickablebutton.rst
deleted file mode 100644
index accb54aea..000000000
--- a/sources/pyside2/doc/tutorials/basictutorial/clickablebutton.rst
+++ /dev/null
@@ -1,90 +0,0 @@
-A Simple Button Tutorial
-************************
-
-In this tutorial, we'll show you how to handle **signals and slots**
-using Qt for Python. **Signals and slots** is a Qt feature that lets
-your graphical widgets communicate with other graphical widgets or
-your python code. Our application creates a button that logs the
-`Button clicked, Hello!` message to the python console each time you
-click it.
-
-Let's start by importing the necessary PySide2 classes and python
-`sys` module:
-::
-
- import sys
- from PySide2.QtWidgets import QApplication, QPushButton
- from PySide2.QtCore import Slot
-
-Let's also create a python function that logs the message to the
-console:
-::
-
- # Greetings
- @Slot()
- def say_hello():
- print("Button clicked, Hello!")
-
-.. note:: The `@Slot()` is a decorator that identifies a function as
- a slot. It is not important to understand why for now,
- but use it always to avoid unexpected behavior.
-
-Now, as mentioned in previous examples you must create the
-`QApplication` to run your PySide2 code:
-::
-
- # Create the Qt Application
- app = QApplication(sys.argv)
-
-Let's create the clickable button, which is a `QPushButton` instance.
-To label the button, we pass a python string to the constructor:
-::
-
- # Create a button
- button = QPushButton("Click me")
-
-Before we show the button, we must connect it to the `say_hello()`
-function that we defined earlier. There are two ways of doing this;
-using the old style or the new style, which is more pythonic. Let's
-use the new style in this case. You can find more information about
-both these styles in the
-`Signals and Slots in PySide2 <https://wiki.qt.io/Qt_for_Python_Signals_and_Slots>`_
-wiki page.
-
-The `QPushButton` has a predefined signal called **clicked**, which
-is triggered every time the button is clicked. We'll connect this
-signal to the `say_hello()` function:
-::
-
- # Connect the button to the function
- button.clicked.connect(say_hello)
-
-Finally, we show the button and start the Qt main loop:
-::
-
- # Show the button
- button.show()
- # Run the main Qt loop
- app.exec_()
-
-Here is the complete code for this example:
-::
-
- #!/usr/bin/python
-
- import sys
- from PySide2.QtWidgets import QApplication, QPushButton
- from PySide2.QtCore import Slot
-
- @Slot()
- def say_hello():
- print("Button clicked, Hello!")
-
- # Create the Qt Application
- app = QApplication(sys.argv)
- # Create a button, connect it and show it
- button = QPushButton("Click me")
- button.clicked.connect(say_hello)
- button.show()
- # Run the main Qt loop
- app.exec_()
diff --git a/sources/pyside2/doc/tutorials/basictutorial/dialog.rst b/sources/pyside2/doc/tutorials/basictutorial/dialog.rst
deleted file mode 100644
index cdb356b91..000000000
--- a/sources/pyside2/doc/tutorials/basictutorial/dialog.rst
+++ /dev/null
@@ -1,145 +0,0 @@
-Creating a Simple PySide2 Dialog Application
-*********************************************
-
-This tutorial shows how to build a simple dialog with some
-basic widgets. The idea is to let users provide their name
-in a `QLineEdit`, and the dialog greets them on click of a
-`QPushButton`.
-
-Let us just start with a simple stub that creates and shows
-a dialog. This stub is updated during the course of this
-tutorial, but you can use this stub as is if you need to:
-::
-
- import sys
- from PySide2.QtWidgets import QApplication, QDialog, QLineEdit, QPushButton
-
- class Form(QDialog):
-
- def __init__(self, parent=None):
- super(Form, self).__init__(parent)
- self.setWindowTitle("My Form")
-
-
- if __name__ == '__main__':
- # Create the Qt Application
- app = QApplication(sys.argv)
- # Create and show the form
- form = Form()
- form.show()
- # Run the main Qt loop
- sys.exit(app.exec_())
-
-The imports aren't new to you, the same for the creation of the
-`QApplication` and the execution of the Qt main loop.
-The only novelty here is the **class definition**.
-
-You can create any class that subclasses PySide2 widgets.
-In this case, we are subclassing `QDialog` to define a custom
-dialog, which we name as **Form**. We have also implemented the
-`init()` method that calls the `QDialog`'s init method with the
-parent widget, if any. Also, the new `setWindowTitle()` method
-just sets the title of the dialog window. In `main()`, you can see
-that we are creating a *Form object* and showing it to the world.
-
-Create the Widgets
-===================
-
-We are going to create two widgets: a `QLineEdit` where users can
-enter their name, and a `QPushButton` that prints the contents of
-the `QLineEdit`.
-So, let's add the following code to the `init()` method of our Form:
-::
-
- # Create widgets
- self.edit = QLineEdit("Write my name here..")
- self.button = QPushButton("Show Greetings")
-
-It's obvious from the code that both widgets will show the corresponding
-texts.
-
-Create a layout to organize the Widgets
-========================================
-
-Qt comes with layout-support that helps you organize the widgets
-in your application. In this case, let's use `QVBoxLayout` to lay out
-the widgets vertically. Add the following code to the `init()` method,
-after creating the widgets:
-::
-
- # Create layout and add widgets
- layout = QVBoxLayout()
- layout.addWidget(self.edit)
- layout.addWidget(self.button)
- # Set dialog layout
- self.setLayout(layout)
-
-So, we create the layout, add the widgets with `addWidget()`,
-and finally we say that our **Form** will have our `QVBoxLayout`
-as its layout.
-
-Create the function to greet and connect the Button
-====================================================
-
-Finally, we just have to add a function to our custom **Form**
-and *connect* our button to it. Our function will be a part of
-the Form, so you have to add it after the `init()` function:
-::
-
- # Greets the user
- def greetings(self):
- print ("Hello {}".format(self.edit.text()))
-
-Our function just prints the contents of the `QLineEdit` to the
-python console. We have access to the text by means of the
-`QLineEdit.text()` method.
-
-Now that we have everything, we just need to *connect* the
-`QPushButton` to the `Form.greetings()` method. To do so, add the
-following line to the `init()` method:
-::
-
- # Add button signal to greetings slot
- self.button.clicked.connect(self.greetings)
-
-Once executed, you can enter your name in the `QLineEdit` and watch
-the console for greetings.
-
-Complete code
-=============
-
-Here is the complete code for this tutorial:
-::
-
- import sys
- from PySide2.QtWidgets import (QLineEdit, QPushButton, QApplication,
- QVBoxLayout, QDialog)
-
- class Form(QDialog):
-
- def __init__(self, parent=None):
- super(Form, self).__init__(parent)
- # Create widgets
- self.edit = QLineEdit("Write my name here")
- self.button = QPushButton("Show Greetings")
- # Create layout and add widgets
- layout = QVBoxLayout()
- layout.addWidget(self.edit)
- layout.addWidget(self.button)
- # Set dialog layout
- self.setLayout(layout)
- # Add button signal to greetings slot
- self.button.clicked.connect(self.greetings)
-
- # Greets the user
- def greetings(self):
- print ("Hello %s" % self.edit.text())
-
- if __name__ == '__main__':
- # Create the Qt Application
- app = QApplication(sys.argv)
- # Create and show the form
- form = Form()
- form.show()
- # Run the main Qt loop
- sys.exit(app.exec_())
diff --git a/sources/pyside2/doc/tutorials/basictutorial/qml.rst b/sources/pyside2/doc/tutorials/basictutorial/qml.rst
deleted file mode 100644
index 81583096b..000000000
--- a/sources/pyside2/doc/tutorials/basictutorial/qml.rst
+++ /dev/null
@@ -1,63 +0,0 @@
-Your First Application Using PySide2 and QtQuick/QML
-*****************************************************
-
-QML is a declarative language that lets you develop applications
-faster than with traditional languages. It is ideal for designing the
-UI of your application because of its declarative nature. In QML, a
-user interface is specified as a tree of objects with properties. In
-this tutorial, we will show how to make a simple "Hello World"
-application with PySide2 and QML.
-
-A PySide2/QML application consists, at least, of two different files -
-a file with the QML description of the user interface, and a python file
-that loads the QML file. To make things easier, let's save both files in
-the same directory.
-
-Here is a simple QML file called `view.qml`:
-::
- import QtQuick 2.0
-
- Rectangle {
- width: 200
- height: 200
- color: "green"
-
- Text {
- text: "Hello World"
- anchors.centerIn: parent
- }
- }
-
-We start by importing `QtQuick 2.0`, which is a QML module.
-
-The rest of the QML code is pretty straightforward for those who
-have previously used HTML or XML files. Basically, we are creating
-a green rectangle with the size `200*200`, and adding a Text element
-that reads "Hello World". The code `anchors.centerIn: parent` makes
-the text appear centered in relation to its immediate parent, which
-is the Rectangle in this case.
-
-Now, let's see how the code looks on the PySide2.
-Let's call it `main.py`:
-::
- from PySide2.QtWidgets import QApplication
- from PySide2.QtQuick import QQuickView
- from PySide2.QtCore import QUrl
-
- app = QApplication([])
- view = QQuickView()
- url = QUrl("view.qml")
-
- view.setSource(url)
- view.show()
- app.exec_()
-
-If you are already familiar with PySide2 and have followed our
-tutorials, you have already seen much of this code.
-The only novelties are that you must `import QtQuick` and set the
-source of the `QQuickView` object to the URL of your QML file.
-Then, as any Qt widget, you call `QQuickView.show()`.
-
-.. note:: If you are programming for desktop, you should consider
- adding `view.setResizeMode(QQuickView.SizeRootObjectToView)`
- before showing the view.
diff --git a/sources/pyside2/doc/tutorials/basictutorial/uifiles.rst b/sources/pyside2/doc/tutorials/basictutorial/uifiles.rst
deleted file mode 100644
index b00437bcb..000000000
--- a/sources/pyside2/doc/tutorials/basictutorial/uifiles.rst
+++ /dev/null
@@ -1,174 +0,0 @@
-Using UI Files
-***************
-
-This page describes the use of Qt Creator to create graphical
-interfaces for your Qt for Python project.
-You will need **Qt Creator** to design and modify your interface (UI file).
-
-If you don't know how to use Qt Creator, refer to the
-`Using Qt Designer <http://doc.qt.io/qtcreator/creator-using-qt-designer.html>`_
-documentation page.
-
-At Qt Creator, create a new Qt Design Form, choose "Main Window" for template.
-And save as `mainwindow.ui`.
-Add a `QPushButton` to the center of the centralwidget.
-
-Your file (mainwindow.ui) should look something like this:
-::
-
- <?xml version="1.0" encoding="UTF-8"?>
- <ui version="4.0">
- <class>MainWindow</class>
- <widget class="QMainWindow" name="MainWindow">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>400</width>
- <height>300</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>MainWindow</string>
- </property>
- <widget class="QWidget" name="centralWidget">
- <widget class="QPushButton" name="pushButton">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>80</y>
- <width>201</width>
- <height>81</height>
- </rect>
- </property>
- <property name="text">
- <string>PushButton</string>
- </property>
- </widget>
- </widget>
- <widget class="QMenuBar" name="menuBar">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>400</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QToolBar" name="mainToolBar">
- <attribute name="toolBarArea">
- <enum>TopToolBarArea</enum>
- </attribute>
- <attribute name="toolBarBreak">
- <bool>false</bool>
- </attribute>
- </widget>
- <widget class="QStatusBar" name="statusBar"/>
- </widget>
- <layoutdefault spacing="6" margin="11"/>
- <resources/>
- <connections/>
- </ui>
-
-Now we are ready to decide how to use the **UI file** from Python.
-
-Generating a Python class
-=========================
-
-Another option to interact with a **UI file** is to generate a Python
-class from it. This is possible thanks to the `pyside2-uic` tool.
-To use this tool, you need to run the following command on a console:
-::
-
- pyside2-uic mainwindow.ui > ui_mainwindow.py
-
-We redirect all the output of the command to a file called `ui_mainwindow.py`,
-which will be imported directly:
-::
-
- from ui_mainwindow import Ui_MainWindow
-
-Now to use it, we should create a personalized class for our widget
-to **setup** this generated design.
-
-To understand the idea, let's take a look at the whole code:
-::
-
- import sys
- from PySide2.QtWidgets import QApplication, QMainWindow
- from PySide2.QtCore import QFile
- from ui_mainwindow import Ui_MainWindow
-
- class MainWindow(QMainWindow):
- def __init__(self):
- super(MainWindow, self).__init__()
- self.ui = Ui_MainWindow()
- self.ui.setupUi(self)
-
- if __name__ == "__main__":
- app = QApplication(sys.argv)
-
- window = MainWindow()
- window.show()
-
- sys.exit(app.exec_())
-
-What is inside the *if* statement is already known from the previous
-examples, and our new basic class contains only two new lines
-that are in charge of loading the generated python class from the UI
-file:
-::
-
- self.ui = Ui_MainWindow()
- self.ui.setupUi(self)
-
-.. note:: You must run `pyside2-uic` again every time you make changes
-to the **UI file**.
-
-Loading it directly
-====================
-
-To load the UI file directly, we will need a class from the **QtUiTools**
-module:
-::
-
- from PySide2.QtUiTools import QUiLoader
-
-The `QUiLoader` lets us load the **ui file** dynamically
-and use it right away:
-::
- ui_file = QFile("mainwindow.ui")
- ui_file.open(QFile.ReadOnly)
-
- loader = QUiLoader()
- window = loader.load(ui_file)
- window.show()
-
-The complete code of this example looks like this:
-::
-
- # File: main.py
- import sys
- from PySide2.QtUiTools import QUiLoader
- from PySide2.QtWidgets import QApplication
- from PySide2.QtCore import QFile
-
- if __name__ == "__main__":
- app = QApplication(sys.argv)
-
- ui_file = QFile("mainwindow.ui")
- ui_file.open(QFile.ReadOnly)
-
- loader = QUiLoader()
- window = loader.load(ui_file)
- ui_file.close()
- window.show()
-
- sys.exit(app.exec_())
-
-Then to execute it we just need to run the following on a
-command prompt:
-::
-
- python main.py
diff --git a/sources/pyside2/doc/tutorials/basictutorial/widgets.rst b/sources/pyside2/doc/tutorials/basictutorial/widgets.rst
deleted file mode 100644
index c864e3d47..000000000
--- a/sources/pyside2/doc/tutorials/basictutorial/widgets.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-Your First QtWidgets Application
-*********************************
-
-As with any other programming framework,
-you start with the traditional "Hello World" program.
-
-Here is a simple example of a Hello World application in PySide2:
-::
- import sys
- from PySide2.QtWidgets import QApplication, QLabel
-
- app = QApplication(sys.argv)
- label = QLabel("Hello World!")
- label.show()
- app.exec_()
-
-
-For a widget application using PySide2, you must always start by
-importing the appropriate class from the `PySide2.QtWidgets` module.
-
-After the imports, you create a `QApplication` instance. As Qt can
-receive arguments from command line, you may pass any argument to
-the QApplication object. Usually, you don't need to pass any
-arguments so you can leave it as is, or use the following approach:
-::
- app = QApplication([])
-
-After the creation of the application object, we have created a
-`QLabel` object. A `QLabel` is a widget that can present text
-(simple or rich, like html), and images:
-::
- # This HTML approach will be valid too!
- label = QLabel("<font color=red size=40>Hello World!</font>")
-
-.. note:: After creating the label, we call `show()` on it.
-
-Finally, we call `app.exec_()` to enter the Qt main loop and start
-to execute the Qt code. In reality, it is only here where the label
-is shown, but this can be ignored for now.