Программирование на Python3 с PyQt5
Шрифт:
3.1 QWidget и QDialog
Окно
№ | Свойство | Назначение |
Имя окна | ||
Доступность | ||
Размеры
| ||
Шрифт, размер шрифта | ||
Вид курсора | ||
Заголовок окна | ||
Иконка окна | ||
Модальность окна (только у 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 # базовый класс для всех объектов интерфейса пользователя