PyQt5 - Проєкт "Подорожі" (checkBox)
У дизайнері форм починаємо створення інтерфейсу проекту. Для цього розмістимо на формі кнопку PushButton, прапорець CheckBox та два елементи напису Label. Зберігаємо форму з назвою travel.ui у каталозі Python.
Скористаємось заготовкою коду:
from PyQt5 import QtWidgets, uic import sys from PyQt5.QtGui import * class Ui(QtWidgets.QMainWindow): def __init__(self): super(Ui, self).__init__() uic.loadUi('travel.ui', self) self.show() app = QtWidgets.QApplication(sys.argv) window = Ui() app.exec_()
Логіка подій проекту наступна: при клацанні кнопки PushButton відбувається заповнення написів Label. В один виводиться текст з описом міста. А для заповнення іншого відбувається перевірка: Якщо прапорець CheckBox позначено, то показати нічне фото міста. Якщо прапорець не позначено, то показати денне фото міста.
Отже, подія, яка запускає заповнення написів - клацання кнопки. У метод опису форми def __init__(self, parent=None): додаємо прив'язку кнопки pushButton до функції:
self.pushButton = self.findChild(QtWidgets.QPushButton, 'pushButton')
self.pushButton.clicked.connect(self.buttonPressed)
Також описуємо два написи (label, label_2 та прапорець checkBox):
self.checkBox = self.findChild(QtWidgets.QCheckBox, 'checkBox')
self.label = self.findChild(QtWidgets.QLabel, 'label')
self.label_2 = self.findChild(QtWidgets.QLabel, 'label_2')
А нижче - описуємо функцію обробки події клацання кноки. Нагадуємо, мають бути заповнені два написи: один текстом про місто, другий - фотографією цього міста (якщо прапорець позначено, то має бути нічне фото, інакше - денне).
Зверніть увагу, для заповнення напису текстом використовується команда setText, а зображенням - setPixmap. Для зображення варто задавати достатній розмір та уможливлювати масштабування цього зображення до цього розміру.
def buttonPressed(self):
self.label_2.setText("London is the capital of Great Britain") # заповнення текстового напису
if self.checkBox.isChecked(): # якщо прапорець позначено
pixmap = QPixmap('London_night.jpg') # у змінну pixmap записуємо фото London_night.jpg
else: # інакше
pixmap = QPixmap('London_day.jpg') # у змінну pixmap записуємо фото London_day.jpg
self.label.setPixmap(pixmap) # виведення зображення в напис
self.label.resize(200,200) # встановлення розміру зображення
self.label.setScaledContents(True) # зображення рівномірно масштабується до вказаного розміру
Зверніть увагу, фотографії повинні міститись у каталозі Python, також потрібно переконатись, що розширення імені файлів фотографій відповідає фактичному.
Завдання
Проект "Подорожі"
Проект "Знайомство"
Для того, щоб текст у написі переносився по рядках - існує властивість wordwrap (її варто застосувати до текстового поля з виведенням тексту, а не зображення).
Поекспериментуйте із розміщенням компонентів форми, їх вирівнюванням.