#5 — Отображение изображения и статуса

В уроке мы научимся добавлять изображение в приложение, а также научимся работать с компонентом QStatusBar. Мы рассмотрим несколько способов добавление картинок, а также отображение различных статусов.
Видеоурок
В фреймворке Qt нет компонента, который отвечает конкретно за картинки. Чтобы добавить изображение в программу необходимо добавить текстовый объект и при помощи кода разместить в нем изображение.
Все изображения лучше всего хранить в самом проекте, а не на компьютере в какой-либо папке. Для хранения файлов в проекте необходимо создать папку resource и в неё добавить файлы.
Чтобы отобразить картинку необходимо использовать класс QPixMap , а также приблизительно следующий код:
QPixmap pix(":/resourec/img/image_name.png"); int w = ui->image->width(); int h = ui->image->height(); ui->image->setPixmap(pix.scaled(w, h, Qt::KeepAspectRatio));
Весь код записан в главном методе MainWindow , который вызывается каждый раз при создании приложения.
Статус бар
Для работы со статус баром используется объект statusBar , который автоматически присутствует в любом пустом приложении. Чтобы поместить туда информацию необходимо воспользоваться методом «showMessage».
Виджеты в PyQt5 (часть 2)

Мы обсудим QPixmap, QLineEdit, QSplitter и QComboBox.
QPixMap
QPixMap – это один из виджетов, использующихся для работы с изображениями. Он оптимизирован для показа изображений на экране. В приведенном ниже примере, мы будем использовать QPixMap для того, чтобы показать изображение в окне.
В нашем примере, мы показываем изображение в окне.
Мы создали объект QPixMap.
Мы поместили изображение в виджет QLabel.
QLineEdit
QLineEdit – это виджет, который разрешает вводить и редактировать одну строку текста. Для этого виджета доступны функции «Отменить» и «Повторить», «Вырезать» и «Вставить», а также функция «перетаскивания».
Этот пример показывает виджет строки редактирования и метку. Текст, который мы вбиваем в строку редактирования, немедленно отображается в виджете метки.
Создается виджет QLineEdit.
Если текст в виджете редактирования строки меняется, мы вызываем метод onChanged().
Внутри метода onChanged, мы устанавливаем напечатанный текст в виджет метки. Мы вызываем метод adjustSize(), чтобы менять размер метки соответственно длине текста.
QSplitter
QSplitter позволяет пользователю контролировать размер виджетов путём перетаскивания границы между ними. В нашем примере, мы показываем три виджета QFrame, организованные с двумя разделителями.
В нашем примере, мы имеем три виджета фрейма и два разделителя. Обратите внимание, что в некоторых темах оформления, разделители могут не быть хорошо видимыми.
Для того, чтобы видеть границы между виджетами QFrame, мы используем стилизованный фрейм.
Мы создаём виджет QSplitter и добавляем в него два виджета.
К тому же, мы можем добавить разделитель к ещё одному виджету разделителя.
QComboBox
QComboBox – это виджет, который позволяет пользователю выбирать из списка вариантов (выпадающий список).
Пример показывает QComboBox и QLabel. Блок со списком имеет список из пяти вариантов. Это имена дистрибутивов Linux. Виджет метки показывает выбранный вариант.
Мы создаём виджет QComboBox с пятью вариантами.
После выбора пункта, мы вызываем метод onActivated().
Внутри метода, мы устанавливаем текст выбранного пункта в виджет метки. Мы приспосабливаем размер метки, как в прошлом примере.
В этой части руководства PyQt5, мы рассмотрели другие четыре виджета PyQt5.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Как вставить изображение в pyqt5?
Нужно вставить изображение в окне. Везде показан один и тот же способ:
label = QLabel(self) pixmap = QPixmap('image.jpeg') label.setPixmap(pixmap)
Что я, собственно, и сделал, но это не работает. Вот мой код:
from PyQt5 import QtWidgets, QtGui class Window(QtWidgets.QMainWindow): def __init__(self, ): super().__init__() self.resize(1000, 1000) self.center() self.general() def general(self): # Menu Bar self.exitAction = QtWidgets.QAction('&Exit', self) self.exitAction.setShortcut('Ctrl+Q') self.exitAction.triggered.connect(QtWidgets.qApp.quit) self.menubar = self.menuBar() self.file_menu = self.menubar.addMenu('&File') self.file_menu.addAction(self.exitAction) self.lbl = QtWidgets.QLabel(self) self.pix = QtGui.QPixmap('img.png') self.lbl.setPixmap(self.pix) self.lbl.move(200, 200) def center(self): frame_window = self.frameGeometry() center_coord = QtWidgets.QDesktopWidget().availableGeometry().center() frame_window.moveCenter(center_coord) self.move(frame_window.topLeft()) if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) w = Window() w.show() sys.exit(app.exec_())

Результат:
Гайд Как сделать GUI на Python [Часть 2], [Qt Designer]
Приветствую, вот и 2-я часть, сегодня я расскажу, как сделать полноценное, относительно нормальное меню.
Ну для начала создадим окно, теперь было бы не плохо сделать задний фон, понадобится виджет Label (В котором пишут текст).
Перемещаем его на окно, и растягиваем его границы по краям, и теперь потребуется в разделе Property Editor пролистать ниже, и найти пункт "styleSheet".
Спойлер: Скриншот

В этот пункт пишем "background-color: ", и сам цвет можно указать двумя способами, к примеру: "background-color: gray" или "background-color: rgb(100,100,100), и получаем задний фон.
Спойлер: Скриншот

Но если вы хотите поставить картинку, а не однотонный задний фон ?! Выход есть!
Для этого ищем пункт "pixmap" и выбираем путь до картинки.
Спойлер: Скриншот

Теперь как задать имя окну, что бы отображалось на "Form", а Ваше название, для этого переходим в раздел Object inspector и выбираем объект "Object | QWidget", и в пункте "windowTitle" пишем свое название.
Спойлер: Скриншот

Так же, если Вы хотите поставить свою икоку для окна, то ниже есть пункт под названием "windowsIcon", выбираем картинку (Желательно использовать png размером 48*48).
Спойлер: Скриншот

Теперь, начнем наробту с кнопкой, так же переходим в "styleSheet", и вишем туда команды:
QPushButton < color: white; # Цвет текста кнопки background-color: rgb(15,15,15); # Цвет фона кнопки width: 75px; # Ширина кнопки height: 50px; # Высота кнопки font-size: 14px; # Размер текста font-weight: bold; # Хз что это border: none; # Хз что это text-align: center; # Тест по середине кнопки ># Состояние кнопки, когда на нее наводятся QPushButton:hover < background-color: rgb(40,40,40); # Меняем цвет кнопки на более светлый ># Состояние кнопки, когда на нее нажали QPushButton:pressed
В итоге получаем:
Спойлер: Скриншот

Теперь о Tab Widget, тут особо заморачиваться не будем, просто найдем "documentMode" и поставим галочку, и белый фон пропадет, создадим задний фон, и переместим на этот виджет.
Спойлер: Скриншот


Сейчас поработаем над виджетом "LineEdit", перемещаем его на меню, и открываем "styleSheel" и для начало сделаем для него фон (background-color:), добавим свой шрифт нажатием на кнопку "add Font" и меняем цвет текста (color: ).
Спойлер: Скриншот

Но можно еще лучше, добавляем "border-style: solid;", "border-width: 1px;" (Ширина линии), "border-color: yellow"; (Цвет линии), и уже получим:
Спойлер: Скриншот

Это можно сказать все, по этим примерам, таким образом можно редактировать практически любой виджет, ниже будет видео, как я делал, покедова.
P.S Блять, купите аккаунты, заебался уже.