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 (її варто застосувати до текстового поля з виведенням тексту, а не зображення).



Поекспериментуйте із розміщенням компонентів форми, їх вирівнюванням.

Остання зміна: вівторок 31 березня 2020 10:02