summaryrefslogtreecommitdiffhomepage
path: root/pyqt.html.markdown
blob: 92c1ca227adcbc383383c82a1b01a00ddcbd82eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
---
category: tool
tool: PyQT
filename: learnpyqt.py
contributors:
    - ["Nathan Hughes", "https://github.com/sirsharpest"]
---

**Qt** is a widely-known framework for developing cross-platform software that can be run on various software and hardware platforms with little or no change in the code, while having the power and speed of native applications. Though **Qt** was originally written in *C++*.


This is an adaption on the C++ intro to QT by [Aleksey Kholovchuk](https://github.com/vortexxx192
), some of the code examples should result in the same functionality
this version just having been done using pyqt!

```python
import sys
from PyQt4 import QtGui

def window():
	# Create an application object
    app = QtGui.QApplication(sys.argv)
	# Create a widget where our label will be placed in
    w = QtGui.QWidget()
	# Add a label to the widget
    b = QtGui.QLabel(w)
	# Set some text for the label
    b.setText("Hello World!")
	# Give some size and placement information
    w.setGeometry(100, 100, 200, 50)
    b.move(50, 20)
	# Give our window a nice title
    w.setWindowTitle("PyQt")
	# Have everything display
    w.show()
	# Execute what we have asked for, once all setup
    sys.exit(app.exec_())

if __name__ == '__main__':
    window()
```

In order to get some of the more advanced features in **pyqt** we need to start looking at building additional elements.
Here we show how to introduce a dialog popup box, useful for asking the user to confirm a decision or to provide information.

```python
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *


def window():
    app = QApplication(sys.argv)
    w = QWidget()
    # Create a button and attach to widget w
    b = QPushButton(w)
    b.setText("Press me")
    b.move(50, 50)
    # Tell b to call this function when clicked
    # notice the lack of "()" on the function call
    b.clicked.connect(showdialog)
    w.setWindowTitle("PyQt Dialog")
    w.show()
    sys.exit(app.exec_())

# This function should create a dialog window with a button
# that waits to be clicked and then exits the program
def showdialog():
    d = QDialog()
    b1 = QPushButton("ok", d)
    b1.move(50, 50)
    d.setWindowTitle("Dialog")
    # This modality tells the popup to block the parent whilst it's active
    d.setWindowModality(Qt.ApplicationModal)
    # On click I'd like the entire process to end
    b1.clicked.connect(sys.exit)
    d.exec_()

if __name__ == '__main__':
    window()
```