Как в приложении PyQt оформить код, чтобы каждый объект был в своем классе и располагались все на форме?
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QTableWidget
from PyQt5.QtWidgets import QTextEdit, QHBoxLayout, QPushButton, QVBoxLayout
import sys
CONST_WIN_SIZE_MAIN_W = 1600
CONST_WIN_SIZE_MAIN_H = 860
LEFT_INDENT_TABW = 10
TOP_INDENT_TABW = 70
WIDTH_TABW = 1580
HEIGHT_TABW = 680
TOP_LOGTEXT = 750
HEIGHT_LOGTEXT = 100
class WinUpdateSql(QMainWindow):
'''Базовый класс. Создается общее окно'''
def __init__(self):
super(WinUpdateSql, self).__init__()
self.setWindowTitle('Редактор базы данных')
self.setStyleSheet("background-color: #e1e5e5;")
self.setWindowFlags(Qt.WindowCloseButtonHint)
self.resize(CONST_WIN_SIZE_MAIN_W, CONST_WIN_SIZE_MAIN_H)
class TableWidget(QTableWidget):
def __init__(self, parent=None):
super(TableWidget, self).__init__(parent)
self.t_widg = QTableWidget(self)
self.t_widg.setGeometry(LEFT_INDENT_TABW,
TOP_INDENT_TABW,
WIDTH_TABW,
HEIGHT_TABW)
class LogsTextEdit(QTextEdit):
def __init__(self, parent=None):
super(LogsTextEdit, self).__init__(parent)
self.logTextBox = QTextEdit(self)
self.logTextBox.setGeometry(LEFT_INDENT_TABW,
TOP_LOGTEXT,
WIDTH_TABW,
HEIGHT_LOGTEXT)
self.logTextBox.setStyleSheet("border-radius: 4px; border: 1px solid")
self.logTextBox.setFont(QFont('Arial', 10))
self.logTextBox.setReadOnly(True)
Не получается корректно поместить на одну форму с использованием self.setCentralWidget
, QHBoxLayout
, QVBoxLayout
?
Еще дополнительно будут добавлены кнопки, текстовые поля
Источник: Stack Overflow на русском