Программирование на Python3 с PyQt5

Сергей Николаевич Талипов, 2020

Основы программирования на Python3 с визуальными компонентами PyQt5 (для PyCharm Community).

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Программирование на Python3 с PyQt5 предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

ЛЕКЦИЯ 3 — ОСНОВНЫЕ КОМПОНЕНТЫ PYQT5

3.1 QWidget и QDialog

Окно

...

(таблица)

...

self.setWindowTitle('Создание простейшей визуальной программы')

self.setWindowIcon(QtGui.QIcon('images/logo.png'))

class Main(QWidget) или class Main(QDialog)

app = QApplication(sys.argv)

window = Main()

window.show()

sys.exit(app.exec_())

3.2 QPushButton

Кнопка

...

(таблица)

...

def solve(self):

self.btn_solve.clicked.connect(self.solve)

3.3 QLabel

Текстовая метка

...

(таблица)

...

self.label_img.setPixmap(QPixmap('images/main.png'))

self.label_img.setScaledContents(True)

self.label_answer.setText('Ответ: ' + str(format(answer, '.12f')))

print (QtGui.QtextDocument(self.label_answer.text()).toPlainText())

3.4 QLineEdit

Текстовое поле для ввода/вывода

...

(таблица)

...

a = self.lineEdit_a.text()

self.lineEdit_a.setText('')

3.5 Практический пример

Вид при использовании QWidget

Вид при использовании QDialog

import sys

from PyQt5 import QtGui

from PyQt5.QtGui import QPixmap

from PyQt5.QtWidgets import *

from PyQt5.uic import loadUi

class Main(QDialog):

def __init__(self):

super(Main, self).__init__()

loadUi('uis/main.ui', self) # загрузка формы в py-скрипт

self.setWindowTitle('Создание простейшей визуальной '

'программы на Python')

self.setWindowIcon(QtGui.QIcon('images/logo.png'))

self.label_img.setPixmap(QPixmap('images/main.png'))

self.label_img.setScaledContents(True)

self.btn_solve.clicked.connect(self.solve) # Связь кнопки с методом

self.btn_clear.clicked.connect(self.clear) # Связь кнопки с методом

self.btn_exit.clicked.connect(self.exit) # Связь кнопки с методом

def solve(self):

a = self.lineEdit_a.text()

b = self.lineEdit_b.text()

x = self.lineEdit_x.text()

if validation_of_data(a, b, x):

a = float(a)

b = float(b)

x = float(x)

if x > 6:

answer = a / x + b / x ** 2

else:

answer = a ** 2 * (x + b)

self.label_answer.setText('Ответ: ' + str(format(answer, '.2f')))

else:

self.label_answer.setText(

'Ошибка!')

def clear(self):

self.lineEdit_a.setText('')

self.lineEdit_b.setText('')

self.lineEdit_x.setText('')

self.label_answer.setText('Ответ: ')

def exit(self):

self.close()

def validation_of_data(a, b, x):

"""

проверяем валидность наших данных, с помощью перехвата исключения

:param a: число, полученное из lineEdit_a

:param b: число, полученное из lineEdit_b

:param x: число, полученное из lineEdit_x

:return: True — прошло валидацию, False — нет

"""

try:

float(a)

float(b)

float(x)

return True

except Exception:

return False

def main():

# каждое приложение должно создать объект QApplication

# sys.argv — список аргументов командной строки

app = QApplication(sys.argv)

window = Main() # базовый класс для всех объектов интерфейса пользователя

window.show() # отобразить окно на экране

sys.exit(app.exec_()) # запуск основного цикла приложения

if __name__ == '__main__':

main()

3.6 Конвертация файла «ui» в скрипт Python

(PyQt5 UI code generator)

pyuic5 name.ui — o name.py

Запускаем из папки с файлом ui в cmd, после чего появляется “py” скрипт в той же папке.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Программирование на Python3 с PyQt5 предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я