Ломается текст и кнопки в PyQT5 на разных мониторах

Написал программу конвертации yml файлов в json. Всё было хорошо, пока я не запустил её на другом мониторе и тут поломался текст, что-то съелось и не видно часть текста и т.д. Пробовал создавать интерфейс на мониторе с коэффициентом приближения 100%, но не помогло.

На этой фотографии съелся текст сверху. Так же если перейти в раздел доп. информация, то и там текст зажевался куда-то.

введите сюда описание изображения

Это фотография с ноутбука, тут ещё хуже ситуация.

введите сюда описание изображения

А на ноутбуке, на котором я писал эту программу - всё работает отлично. Я прочитал, что долнжы помочь лаяуты, я пытался добавить автоматическое масштабирование, но у меня ничего не получилось, ПРОШУ помощи!

main.py

import sys
from PyQt5 import QtCore, QtGui, QtWidgets    
from PyQt5.QtGui import QColor, QIcon 
from PyQt5.uic import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sys
import os
from ruamel.yaml import YAML
from ruamel.yaml.constructor import SafeConstructor
import json



#TODO: Доделать проверку ошибок на отсутствие файла И вывод о том, что файл успешно сохранён


from py_windows.main import Ui_MainWindow
from py_windows.informations import Ui_MainWindow2

class Main_Screen(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(Main_Screen, self).__init__(parent)
        self.setupUi(self)

class Informations_Screen(QtWidgets.QMainWindow, Ui_MainWindow2):
    def __init__(self, parent=None):
        super(Informations_Screen, self).__init__(parent)
        self.setupUi(self)

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


        self.fname = ""
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)

        #Начало класса Main_Screen
        self.main_screen = Main_Screen()
        self.main_screen.pushButton_2.clicked.connect(self.add_file)
        self.main_screen.pushButton.clicked.connect(self.save_file)
        self.main_screen.pushButton_3.clicked.connect(self.gotoInformationScreen)
        #Конец класса Main_Screen


        #Начало класса Informations_Screen
        self.informations_screen = Informations_Screen()
        self.informations_screen.pushButton_3.clicked.connect(self.gotomain)
        #Конец класса Informations_Screen




        self.stack = QStackedWidget() # QStackedWidget видно сразу несколько виджетов
        self.stack.addWidget(self.main_screen) # 0 self.stack.setCurrentIndex(0)
        self.stack.addWidget(self.informations_screen) # 1 self.stack.setCurrentIndex(0)


        self.stack.setCurrentIndex(0)
        self.nameProgramm(self.stack.currentIndex())



        self.gotomain()

        hbox = QHBoxLayout(self.centralWidget)
        hbox.setContentsMargins(0, 0, 0, 0) #вроде можно без этого ????????????????????????????????????
        hbox.addWidget(self.stack)


    def nameProgramm(self, w=0):
        self.setWindowTitle('Конвертер YML to JSON')
        self.setWindowIcon(QIcon('images/gnivc2.png'))




    def gotomain(self):
        self.stack.setCurrentIndex(0)
        self.nameProgramm(self.stack.currentIndex())
        self.adjustSize()
        #self.setFixedSize(421, 516)


    def gotoInformationScreen(self):
        self.stack.setCurrentIndex(1)
        self.nameProgramm(self.stack.currentIndex())
        self.adjustSize()
        #self.setFixedSize(421, 516)




    def add_file(self):
        self.fname, _ = QFileDialog.getOpenFileName(self,"Open file", ".", "YAML Files (*.yml)")

        if self.fname:
            base_name = os.path.basename(self.fname) #Только для верхнего поля
            self.main_screen.lineEdit.setText(base_name)

    def save_file(self):
        if self.fname:
            SplitFileByDuplicates(self.fname)
            self.main_screen.lineEdit.setText("Конвертация завершена!")
            self.main_screen.lineEdit.setStyleSheet("background-color: rgb(66, 71, 90);"
                                                    "color: green;"
                                                    "font-weight: bold;"
                                                    "border-radius: 15px; /* Задайте радиус, чтобы сделать края овальными */\n"
                                                    "padding: 2px;")
            QTimer.singleShot(3000, self.clear_message)

        else:
            self.main_screen.lineEdit.setText("Ошибка конвертации!")
            self.main_screen.lineEdit.setStyleSheet("background-color: rgb(66, 71, 90);"
                                                    "color: red;"
                                                    "font-weight: bold;"
                                                    "border-radius: 15px; /* Задайте радиус, чтобы сделать края овальными */\n"
                                                    "padding: 2px;")
            QTimer.singleShot(3000, self.clear_message)



            info = QMessageBox(self)
            info.setIcon(QMessageBox.Warning)  # Устанавливаем тип иконки внутри окна
            info.setWindowTitle("Не выбран файл")
            info.setText("Пожалуйста выберите файл для конвертации!")
            info.setStandardButtons(QMessageBox.Ok)

            # Устанавливаем внешнюю иконку для окна
            info.setWindowIcon(QIcon('images/gnivc.png'))

            # Устанавливаем стиль для изменения фона
            info.setStyleSheet("""
            QMessageBox { 
                background-color: rgb(17, 18, 21); 
            }
            QMessageBox QLabel {
                color: rgb(255, 255, 255);  /* Цвет текста */
            }
            QPushButton { 
                color: white; 
                background-color: rgb(151, 102, 255); 
            }
        """)

            info.exec_()

    def clear_message(self):
        self.main_screen.lineEdit.setText("")
        self.main_screen.lineEdit.setStyleSheet("background-color: rgb(66, 71, 90);\n"
"color: rgb(162, 162, 162);\n"
"border-radius: 15px; /* Задайте радиус, чтобы сделать края овальными */\n"
"padding: 2px;")

def SplitFileByDuplicates(file_name):
        def construct_yaml_map(self, node):
            data = []
            yield data
            for key_node, value_node in node.value:
                key = self.construct_object(key_node, deep=True)
                val = self.construct_object(value_node, deep=True)
                data.append((key, val))
        
        with open(file_name, "r") as f:
            SafeConstructor.add_constructor(u'tag:yaml.org,2002:map', construct_yaml_map)
            yaml = YAML(typ='safe')
            data = yaml.load(f.read())
            print(data)
            servers = data[0][1]
            
            def create_partition(server_list):
                documents_folder = os.path.join(os.path.expanduser("~"), "Documents")
                json_file_name = os.path.join(documents_folder, os.path.splitext(os.path.basename(file_name))[0] + ".json")
                
                with open(json_file_name, "w") as f:
                    json.dump(server_list, f, indent=4)

            server_list = []
            for server in servers:
                server_name = server[0]
                server_data = server[1]
                server_entry = {
                    "hostname": server_name,
                    "data": {k: v for k, v in server_data}
                }
                server_list.append(server_entry)

            if server_list:
                create_partition(server_list)

     
        


def application():
    app = QApplication(sys.argv)

    



    window = MainWindow()
    window.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    application()

main_screen.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'main.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(421, 516)
        MainWindow.setMinimumSize(QtCore.QSize(421, 516))
        MainWindow.setMaximumSize(QtCore.QSize(421, 516))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(0, 0, 421, 516))
        self.widget.setStyleSheet("#widget{background-color: rgb(17, 18, 21);}")
        self.widget.setObjectName("widget")
        self.widget_2 = QtWidgets.QWidget(self.widget)
        self.widget_2.setGeometry(QtCore.QRect(0, 30, 421, 80))
        self.widget_2.setStyleSheet("#widget_2{background-color: rgb(23, 25, 33);}\n"
"\n"
"\n"
"\n"
"")
        self.widget_2.setObjectName("widget_2")
        self.line_2 = QtWidgets.QFrame(self.widget_2)
        self.line_2.setGeometry(QtCore.QRect(0, 0, 421, 3))
        self.line_2.setStyleSheet("/*background-color: rgb(0, 139, 247);*/\n"
"background-color: rgb(151, 102, 255);")
        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.lineEdit = QtWidgets.QLineEdit(self.widget_2)
        self.lineEdit.setGeometry(QtCore.QRect(74, 26, 271, 31))
        self.lineEdit.setStyleSheet("background-color: rgb(66, 71, 90);\n"
"color: rgb(162, 162, 162);\n"
"border-radius: 15px; /* Задайте радиус, чтобы сделать края овальными */\n"
"padding: 2px;")
        self.lineEdit.setCursorPosition(0)
        self.lineEdit.setAlignment(QtCore.Qt.AlignCenter)
        self.lineEdit.setObjectName("lineEdit")
        self.widget_3 = QtWidgets.QWidget(self.widget_2)
        self.widget_3.setGeometry(QtCore.QRect(13, 8, 61, 61))
        self.widget_3.setStyleSheet("background-image: url(:/file/images/yml3.png);")
        self.widget_3.setObjectName("widget_3")
        self.widget_4 = QtWidgets.QWidget(self.widget_2)
        self.widget_4.setGeometry(QtCore.QRect(346, 7, 61, 61))
        self.widget_4.setStyleSheet("background-image: url(:/file/images/json3.png);")
        self.widget_4.setObjectName("widget_4")
        self.line = QtWidgets.QFrame(self.widget)
        self.line.setGeometry(QtCore.QRect(0, 110, 421, 3))
        self.line.setStyleSheet("/*background-color: rgb(0, 139, 247);*/\n"
"background-color: rgb(151, 102, 255);")
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.label = QtWidgets.QLabel(self.widget)
        self.label.setGeometry(QtCore.QRect(125, 6, 171, 19))
        self.label.setMinimumSize(QtCore.QSize(131, 19))
        self.label.setMaximumSize(QtCore.QSize(99999, 99999))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setStyleSheet("color: rgb(151, 102, 255);")
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setGeometry(QtCore.QRect(105, 190, 211, 31))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.pushButton.setFont(font)
        self.pushButton.setStyleSheet("#pushButton {\n"
"background-color: rgb(151, 102, 255);\n"
"/*background-color: rgb(0, 139, 247);*/\n"
"    color: rgb(255, 255, 255);\n"
"border-radius: 15px; /* Задайте радиус, чтобы сделать края овальными */\n"
"padding: 2px;}\n"
"\n"
"\n"
"#pushButton:hover{\n"
"background-color: rgb(164, 205, 217);\n"
"}")
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        self.pushButton_2.setGeometry(QtCore.QRect(105, 140, 211, 31))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setStyleSheet("#pushButton_2 {\n"
"    background-color: rgb(151, 102, 255);\n"
"/*background-color: rgb(0, 139, 247);*/\n"
"    color: rgb(255, 255, 255);\n"
"border-radius: 15px; /* Задайте радиус, чтобы сделать края овальными */\n"
"padding: 2px;}\n"
"\n"
"\n"
"#pushButton_2:hover{\n"
"background-color: rgb(164, 205, 217);\n"
"}")
        self.pushButton_2.setObjectName("pushButton_2")
        self.widget_5 = QtWidgets.QWidget(self.widget)
        self.widget_5.setGeometry(QtCore.QRect(110, 247, 200, 200))
        self.widget_5.setStyleSheet("background-image: url(:/file/images/gnvclogo.png);")
        self.widget_5.setObjectName("widget_5")
        self.pushButton_3 = QtWidgets.QPushButton(self.widget)
        self.pushButton_3.setGeometry(QtCore.QRect(75, 470, 271, 31))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_3.setFont(font)
        self.pushButton_3.setStyleSheet("#pushButton_3 {\n"
"background-color: rgb(151, 102, 255);\n"
"/*background-color: rgb(0, 139, 247);*/\n"
"    color: rgb(255, 255, 255);\n"
"border-radius: 15px; /* Задайте радиус, чтобы сделать края овальными */\n"
"padding: 2px;}\n"
"\n"
"\n"
"#pushButton_3:hover{\n"
"background-color: rgb(164, 205, 217);\n"
"}")
        self.pushButton_3.setObjectName("pushButton_3")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.lineEdit.setPlaceholderText(_translate("MainWindow", "Название файла.yml"))
        self.label.setText(_translate("MainWindow", "Конвертация YML в JSON"))
        self.pushButton.setText(_translate("MainWindow", "Конвертировать"))
        self.pushButton_2.setText(_translate("MainWindow", "Выбрать файл"))
        self.pushButton_3.setText(_translate("MainWindow", "Дополнительная информация"))
import qrc_files.file

informations_screen.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'informations.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow2(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(421, 516)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(0, 0, 421, 516))
        self.widget.setStyleSheet("#widget{background-color: rgb(17, 18, 21);}")
        self.widget.setObjectName("widget")
        self.widget_2 = QtWidgets.QWidget(self.widget)
        self.widget_2.setGeometry(QtCore.QRect(0, 170, 421, 80))
        self.widget_2.setStyleSheet("#widget_2{background-color: rgb(23, 25, 33);}\n"
"\n"
"\n"
"\n"
"")
        self.widget_2.setObjectName("widget_2")
        self.line_2 = QtWidgets.QFrame(self.widget_2)
        self.line_2.setGeometry(QtCore.QRect(0, 0, 421, 3))
        self.line_2.setStyleSheet("/*background-color: rgb(0, 139, 247);*/\n"
"background-color: rgb(151, 102, 255);")
        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.label = QtWidgets.QLabel(self.widget_2)
        self.label.setGeometry(QtCore.QRect(70, 10, 286, 19))
        self.label.setStyleSheet("color: rgb(255, 255, 255);")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.widget_2)
        self.label_2.setGeometry(QtCore.QRect(113, 34, 195, 20))
        self.label_2.setStyleSheet("color: rgb(255, 255, 255);")
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.widget_2)
        self.label_3.setGeometry(QtCore.QRect(125, 60, 171, 20))
        self.label_3.setStyleSheet("color: rgb(151, 102, 255);")
        self.label_3.setObjectName("label_3")
        self.line = QtWidgets.QFrame(self.widget)
        self.line.setGeometry(QtCore.QRect(0, 250, 421, 3))
        self.line.setStyleSheet("/*background-color: rgb(0, 139, 247);*/\n"
"background-color: rgb(151, 102, 255);")
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.pushButton_3 = QtWidgets.QPushButton(self.widget)
        self.pushButton_3.setGeometry(QtCore.QRect(75, 470, 271, 31))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_3.setFont(font)
        self.pushButton_3.setStyleSheet("#pushButton_3 {\n"
"background-color: rgb(151, 102, 255);\n"
"/*background-color: rgb(0, 139, 247);*/\n"
"    color: rgb(255, 255, 255);\n"
"border-radius: 15px; /* Задайте радиус, чтобы сделать края овальными */\n"
"padding: 2px;}\n"
"\n"
"\n"
"#pushButton_3:hover{\n"
"background-color: rgb(164, 205, 217);\n"
"}")
        self.pushButton_3.setObjectName("pushButton_3")
        self.widget_5 = QtWidgets.QWidget(self.widget)
        self.widget_5.setGeometry(QtCore.QRect(110, 50, 200, 120))
        self.widget_5.setStyleSheet("background-image: url(:/file/images/gnvclogo.png);")
        self.widget_5.setObjectName("widget_5")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "Программа сохраняет Json файл в \"Документы\""))
        self.label_2.setText(_translate("MainWindow", "Создано для сотрудников ГНИВЦ"))
        self.label_3.setText(_translate("MainWindow", "Created by: Никита Пфейфер"))
        self.pushButton_3.setText(_translate("MainWindow", "Назад"))
import qrc_files.file

Ответы (1 шт):

Автор решения: Никита Пфейфер

Менеджеры компоновки (Лаяуты) решили данную проблему

→ Ссылка