Перейти к содержимому

Как вставить картинку в qt designer python

  • автор:

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

#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)

Python 3 логотип

Мы обсудим 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 Блять, купите аккаунты, заебался уже.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *