Гайд Как сделать GUI на Python [Часть 2], [Qt Designer]

  • Автор темы Автор темы SQL
  • Дата начала Дата начала
Эксперт
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,480
Реакции
680
Приветствую, вот и 2-я часть, сегодня я расскажу, как сделать полноценное, относительно нормальное меню.
Ну для начала создадим окно, теперь было бы не плохо сделать задний фон, понадобится виджет Label (В котором пишут текст).
Перемещаем его на окно, и растягиваем его границы по краям, и теперь потребуется в разделе Property Editor пролистать ниже, и найти пункт "styleSheet".
Screenshot-2.png
В этот пункт пишем "background-color: ", и сам цвет можно указать двумя способами, к примеру: "background-color: gray" или "background-color: rgb(100,100,100), и получаем задний фон.
Screenshot-3.png
Но если вы хотите поставить картинку, а не однотонный задний фон ?! Выход есть!
Для этого ищем пункт "pixmap" и выбираем путь до картинки.
Screenshot-4.png
Теперь как задать имя окну, что бы отображалось на "Form", а Ваше название, для этого переходим в раздел Object inspector и выбираем объект "Object | QWidget", и в пункте "windowTitle" пишем свое название.
Screenshot-5.png
Так же, если Вы хотите поставить свою икоку для окна, то ниже есть пункт под названием "windowsIcon", выбираем картинку (Желательно использовать png размером 48*48).
Screenshot-6.png
Теперь, начнем наробту с кнопкой, так же переходим в "styleSheet", и вишем туда команды:
Код:
Expand Collapse Copy
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 {
  background-color: rgb(60,60,60);  # Меняем цвет кнопки на еще более светлый
}
В итоге получаем:
Screenshot-7.png
Теперь о Tab Widget, тут особо заморачиваться не будем, просто найдем "documentMode" и поставим галочку, и белый фон пропадет, создадим задний фон, и переместим на этот виджет.
Screenshot-8.png
Screenshot-9.png
Сейчас поработаем над виджетом "LineEdit", перемещаем его на меню, и открываем "styleSheel" и для начало сделаем для него фон (background-color:), добавим свой шрифт нажатием на кнопку "add Font" и меняем цвет текста (color: ).
Screenshot-10.png
Но можно еще лучше, добавляем "border-style: solid;", "border-width: 1px;" (Ширина линии), "border-color: yellow"; (Цвет линии), и уже получим:
Screenshot-11.png
Это можно сказать все, по этим примерам, таким образом можно редактировать практически любой виджет, ниже будет видео, как я делал, покедова.
P.S Блять, купите аккаунты, заебался уже.

Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Последнее редактирование модератором:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
border: none; # Хз что это
Если бы c# то там можно было сделать flat
 
Ну я так и понял. Очень удобно получаеца. Сам начал изучать python чтобы научиться бэк писать, потому что html, css, bootstrap знаю, но фронт не вдохновил совершенно и js с react'ом изучать расхотелось. А тут оказывается мои знания могут пригодиться в создании GUI, клево. Спасибо за гайд.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ну по сути это просто css вот только как задизайнить верхний бар
 
Ну по сути это просто css вот только как задизайнить верхний бар
Это ни как, это уже обрамление самой OC, я лишь могу сказать, как убрать обрамление, но тебе придется свое делать уже в меню, и делать виджет на перемещение окна
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Это ни как, это уже обрамление самой OC, я лишь могу сказать, как убрать обрамление, но тебе придется свое делать уже в меню, и делать виджет на перемещение окна
Ок как эту штуку сделать?
 
Ок как эту штуку сделать?
Вырезаешь эту хуету из кода:
1596976656451.png


Вставляешь:
Код:
Expand Collapse Copy
class Widget(QtWidgets.QWidget, Ui_Form):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)
        self.setupUi(self)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Widget()
    ui.show()
    sys.exit(app.exec_())
Получаем:
1596976737552.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вырезаешь эту хуету из кода:
Посмотреть вложение 92398

Вставляешь:
Код:
Expand Collapse Copy
class Widget(QtWidgets.QWidget, Ui_Form):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)
        self.setupUi(self)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Widget()
    ui.show()
    sys.exit(app.exec_())
Получаем:
Посмотреть вложение 92400
ок а как сделать чтобы окно можно было двигать
 
ок а как сделать чтобы окно можно было двигать
не знаю, как вариант, можешь сделать не видимую кнопку, при зажатии она считывает координаты курсора, и перекидывает туда меню, но у тебя менюшку будет наверное дергать, как пидорас хуи
 
ок а как сделать чтобы окно можно было двигать
не знаю, как вариант, можешь сделать не видимую кнопку, при зажатии она считывает координаты курсора, и перекидывает туда меню, но у тебя менюшку будет наверное дергать, как пидорас хуи
Нужно перегрузить два метода:

Код:
Expand Collapse Copy
QPoint        m_pCursorPosition;
 virtual void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE;
  virtual void mouseMoveEvent(QMouseEvent *e) Q_DECL_OVERRIDE;

Код:
Expand Collapse Copy
void cTitleBar::mousePressEvent(QMouseEvent *e)
{
    if( e->button() == Qt::LeftButton ) {
        m_pCursorPosition = mapToParent(e->pos());
    }
}
void cTitleBar::mouseMoveEvent(QMouseEvent *e)
{
    if(e->buttons() & Qt::LeftButton){
        parentWidget()->move(e->globalPos() - m_pCursorPosition);
    }
}
в моем случаи cTitleBar это наследник от QWidget
 
Нужно перегрузить два метода:

Код:
Expand Collapse Copy
QPoint        m_pCursorPosition;
virtual void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE;
  virtual void mouseMoveEvent(QMouseEvent *e) Q_DECL_OVERRIDE;

Код:
Expand Collapse Copy
void cTitleBar::mousePressEvent(QMouseEvent *e)
{
    if( e->button() == Qt::LeftButton ) {
        m_pCursorPosition = mapToParent(e->pos());
    }
}
void cTitleBar::mouseMoveEvent(QMouseEvent *e)
{
    if(e->buttons() & Qt::LeftButton){
        parentWidget()->move(e->globalPos() - m_pCursorPosition);
    }
}
в моем случаи cTitleBar это наследник от QWidget
Брат, это python
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нужно перегрузить два метода:

Код:
Expand Collapse Copy
QPoint        m_pCursorPosition;
virtual void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE;
  virtual void mouseMoveEvent(QMouseEvent *e) Q_DECL_OVERRIDE;

Код:
Expand Collapse Copy
void cTitleBar::mousePressEvent(QMouseEvent *e)
{
    if( e->button() == Qt::LeftButton ) {
        m_pCursorPosition = mapToParent(e->pos());
    }
}
void cTitleBar::mouseMoveEvent(QMouseEvent *e)
{
    if(e->buttons() & Qt::LeftButton){
        parentWidget()->move(e->globalPos() - m_pCursorPosition);
    }
}
в моем случаи cTitleBar это наследник от QWidget
Ясно беды с башкой у модера(шутка не баньте пж, я отсасу)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу