У меня возникли проблемы с центрированием логотипа в этом окне PyQt.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 У меня возникли проблемы с центрированием логотипа в этом окне PyQt.

Сообщение Anonymous »

Я разделил центральный виджет QWidget на две стороны: левую и правую. В левой части находится логотип, а в правой виджете — поле входа. Поскольку я хочу, чтобы поле входа имело фиксированный размер и располагалось на определенном расстоянии от правого поля, я включил QSpacerItem для достижения желаемого поведения. Однако после добавления QSpacer в правый кадр мой логотип смещается от центра. Чтобы уравновесить это, я добавил QSpacer и в левый кадр. Когда я запускаю код, все работает как положено, но когда я расширяю экран, логотип смещается вправо. Я добавил второй QSpacer справа от логотипа, чтобы вставить его, но мне все равно не удается центрировать логотип.
Когда разделитель добавлен только в right_side_frame:< /p>
Изображение

Графический интерфейс после размещения логотипа между двумя разделителями:
[img]https://i.sstatic. net/ZwoKZRmS.png[/img]

Что я пытаюсь воссоздать

Код: Выделить всё

#Login Window
from PyQt6.QtWidgets import *
from PyQt6.QtGui import QPixmap
from PyQt6.QtCore import Qt
from ColorWidget import Color

class MainWindow(QMainWindow):
def __init__(self):
super().__init__()

# Window Properties
self.setWindowTitle('login window')
self.setMinimumSize(1050, 650)

#Main Layouts
main_layout = QHBoxLayout()

left_side_frame = QWidget()
right_side_frame = QWidget()

main_layout.addWidget(left_side_frame)
main_layout.addWidget(right_side_frame)

#Left Layout
left_layout = QHBoxLayout()

left_h_spacer = QSpacerItem(200, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
left_layout.addItem(left_h_spacer)

#label
logo_label = QLabel('logo')
logo_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
left_layout.addWidget(logo_label)

left_side_frame.setLayout(left_layout)

right_side_spacer = QSpacerItem(200, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
left_layout.addItem(right_side_spacer)

#Right Layout

right_layout = QHBoxLayout()

#Sign-in Box
signin_box = Color('white')
signin_box.setObjectName('signin_box')
signin_box.setFixedSize(450,550)

Spacer = QSpacerItem(200, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
right_layout.addItem(Spacer)
right_layout.addWidget(signin_box)

right_side_frame.setLayout(right_layout)
right_side_frame.setContentsMargins(0, 50, 80, 50)

# Set main widget
canvas = QWidget()
canvas.setObjectName('canvas')
canvas.setLayout(main_layout)
self.setCentralWidget(canvas)

if __name__ == '__main__':
app = QApplication([])
with open('style.css', 'r') as f:
app.setStyleSheet(f.read())
window = MainWindow()
window.show()
app.exec()

таблица стилей:

Код: Выделить всё

#canvas {
background-image: url('Images/test2.jpg');
background-position: center;
}

#sign_in_label {
color: black;
font-size:  24px;
}
#email_label, #password_label, #register_label {
color: grey;
font-size: 12px;
}
Я немного центрирую логотип, используя следующие значения:

Код: Выделить всё

left_h_spacer = QSpacerItem(500, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
left_layout.addItem(left_h_spacer)

right_side_spacer = QSpacerItem(300, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
left_layout.addItem(right_side_spacer)
Размер моего экрана 1512, 982

Подробнее здесь: https://stackoverflow.com/questions/785 ... yqt-window
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»