Задать вопрос
@I3EKTOP

Как сделать кнопку произвольной формы в PyQt5?

Всем добрый день. Учу PyQt5 по книге Прохоренко, захотел сделать кнопку овальной формы и столкнулся с проблемой. Перерыл интернет, нашёл как вставить изображение, но рамка кнопки всё равно прямоугольная. В книге описано создание окна произвольной формы с использованием изображения, но у меня не получается с помощью setBrush загнать кнопке фон из изображения. Как это сделать? Приложил код, которым пытаюсь вывести изображение как фон, но ничего не выходит, не могу понять почему =(

from PyQt5 import QtCore, QtGui, QtWidgets
import sys

app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.resize(200, 200)

btn = QtWidgets.QPushButton('x',window)
b_pal = btn.palette()
b_pal.setBrush(QtGui.QPalette.Normal, QtGui.QPalette.Button,
QtGui.QBrush(QtGui.QPixmap("img.jpg")))
btn.setPalette(b_pal)
btn.move(50,50)
window.show()

sys.exit(app.exec_())
  • Вопрос задан
  • 2827 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Andrey_Dolg
Я не учился по книгам, и возможно этот подход будет немного некорректен с точки зрения полноценного изучения Pyqt. Если правильно понимаю нужно что-то вроде 5c5aac69127e0809483147.png
как вариант использовать qss стили. Кнопка выше как пример. Позиционирование через Qh/Qv layout'ы. вот код для такой кнопки:
collate = QPushButton("Collate")
# Style sheet for button
collate.setStyleSheet("QPushButton {background-color: rgb(51,122,183); color: White; border-radius: 4px;}"
                           "QPushButton:pressed {background-color:rgb(31,101,163) ; }")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы