mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 09:41:36 +00:00
84 lines
3.5 KiB
Markdown
84 lines
3.5 KiB
Markdown
|
---
|
|||
|
category: tool
|
|||
|
tool: PyQT
|
|||
|
filename: learnpyqt-ru.py
|
|||
|
translator:
|
|||
|
- ["Vadim Toptunov", "https://github.com/VadimToptunov"]
|
|||
|
---
|
|||
|
|
|||
|
**Qt** - широко известный кросс-платформенный фреймворк для разработки программного обеспечения,
|
|||
|
который может быть использован на различных софтварных и хардварных платформах без какого-либо
|
|||
|
изменения в коде. Данный фреймворк при этом обладает мощью и скоростью нативных приложений.
|
|||
|
Qt и был изначально написан на *C++*.
|
|||
|
|
|||
|
Данный текст является адаптацией введения в Qt на C++ под авторством Алексея Ковальчука для pyqt.
|
|||
|
|
|||
|
|
|||
|
```python
|
|||
|
|
|||
|
def window():
|
|||
|
# Создайте объект приложения
|
|||
|
app = QtGui.QApplication(sys.argv)
|
|||
|
# Создайте виджет, где будет находиться наш лейбл
|
|||
|
w = QtGui.QWidget()
|
|||
|
# Добавьте лейбл в виджет
|
|||
|
b = QtGui.QLabel(w)
|
|||
|
# Задайте текст для лейбла
|
|||
|
b.setText("Hello World!")
|
|||
|
# Задайте информация о размере и расположении
|
|||
|
w.setGeometry(100, 100, 200, 50)
|
|||
|
b.move(50, 20)
|
|||
|
# Задайте заголовок окна
|
|||
|
w.setWindowTitle("PyQt")
|
|||
|
# Все ранее написанное выводится на экран
|
|||
|
w.show()
|
|||
|
# Настройка
|
|||
|
sys.exit(app.exec_())
|
|||
|
|
|||
|
if __name__ == '__main__':
|
|||
|
window()
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
Для того, чтобы получить более продвинутые функции приложения в pyqt, нам необходимо
|
|||
|
обратить внимание на создание дополнительных элементов. Ниже представлено создание всплывающего диалогового окна, которое просит пользователя подтвердить его решение или предоставить какую-либо
|
|||
|
информацию.
|
|||
|
|
|||
|
```Python
|
|||
|
import sys
|
|||
|
from PyQt4.QtGui import *
|
|||
|
from PyQt4.QtCore import *
|
|||
|
|
|||
|
|
|||
|
def window():
|
|||
|
app = QApplication(sys.argv)
|
|||
|
w = QWidget()
|
|||
|
# Создайте кнопку и прикрепите ее к виджету w
|
|||
|
b = QPushButton(w)
|
|||
|
b.setText("Press me")
|
|||
|
b.move(50, 50)
|
|||
|
# Укажите b вызвать эту функцию при клике мышкой
|
|||
|
# Заметьте, что в вызове функции отсутствуют "()"
|
|||
|
b.clicked.connect(showdialog)
|
|||
|
w.setWindowTitle("PyQt Dialog")
|
|||
|
w.show()
|
|||
|
sys.exit(app.exec_())
|
|||
|
|
|||
|
Данная функция должна создавать диалоговое окно с кнопкой, которая ждет клика по себе
|
|||
|
и затем завершает программу.
|
|||
|
|
|||
|
def showdialog():
|
|||
|
d = QDialog()
|
|||
|
b1 = QPushButton("ok", d)
|
|||
|
b1.move(50, 50)
|
|||
|
d.setWindowTitle("Dialog")
|
|||
|
# Эта модальность сообщает всплывающему окну блокировать родительский элемент, пока он активен
|
|||
|
d.setWindowModality(Qt.ApplicationModal)
|
|||
|
# Процесс завершается по клику мышкой
|
|||
|
b1.clicked.connect(sys.exit)
|
|||
|
d.exec_()
|
|||
|
|
|||
|
if __name__ == '__main__':
|
|||
|
window()
|
|||
|
```
|