Nov-18-2022, 09:29 PM
like this?
from PyQt5.QtWidgets import (QMainWindow, QApplication, QGridLayout, QTextEdit, QProgressBar, QLineEdit, QLabel, QWidget, QPushButton) class MainWindow(QMainWindow): def __init__(self, parent = None): super(MainWindow, self).__init__(parent) self.setupUI() def setupUI(self): self.setGeometry(0, 0, 700, 500) central_widget = QWidget() wnd_grid, wnd_edit = QGridLayout(), QTextEdit() self.prog = QProgressBar() header = ['To:', 'CC:', 'BCC:', 'Subject:'] edits = [QLineEdit(), QLineEdit(), QLineEdit(), QLineEdit()] for i, (lab, lin) in enumerate(zip(header, edits)): wnd_grid.addWidget(QLabel(lab), i, 0) wnd_grid.addWidget(lin, i, 1, 1, 5) wnd_grid.addWidget(wnd_edit, 4, 0, 1, 6) wnd_grid.addWidget(self.prog, 5, 0, 1, 6) button = QPushButton() button.setText("Send") button.setFixedWidth(80) button.clicked.connect(self.update) wnd_grid.addWidget(button, 6, 0) central_widget.setLayout(wnd_grid) self.setCentralWidget(central_widget) def update(self): self.reset() completed = 0 while completed < 100: completed += 0.00005 self.prog.setValue(int(completed)) def reset(self): value = 0 self.prog.setValue(value) if __name__ == '__main__': import sys app = QApplication(sys.argv) win = MainWindow() win.setWindowTitle("Main Window") win.show() sys.exit(app.exec_())or you can add a layout to the central_widget laylout
from PyQt5.QtWidgets import (QMainWindow, QApplication, QGridLayout, QTextEdit, QVBoxLayout, QProgressBar, QLineEdit, QLabel, QWidget, QPushButton) class MainWindow(QMainWindow): def __init__(self, parent = None): super(MainWindow, self).__init__(parent) self.setupUI() def setupUI(self): self.setGeometry(0, 0, 700, 500) central_widget = QWidget() wnd_grid, wnd_edit = QGridLayout(), QTextEdit() self.prog = QProgressBar() header = ['To:', 'CC:', 'BCC:', 'Subject:'] edits = [QLineEdit(), QLineEdit(), QLineEdit(), QLineEdit()] for i, (lab, lin) in enumerate(zip(header, edits)): wnd_grid.addWidget(QLabel(lab), i, 0) wnd_grid.addWidget(lin, i, 1, 1, 5) wnd_grid.addWidget(wnd_edit, 4, 0, 1, 6) button = QPushButton() button.setText("Send") button.setFixedWidth(80) button.clicked.connect(self.update) wnd_grid.addWidget(button, 6, 0) central_widget.setLayout(wnd_grid) prog_layout = QVBoxLayout() prog_layout.addWidget(self.prog) central_widget.layout().addLayout(prog_layout, 7, 0, 1, 6) self.setCentralWidget(central_widget) def update(self): self.reset() completed = 0 while completed < 100: completed += 0.00005 self.prog.setValue(int(completed)) def reset(self): value = 0 self.prog.setValue(value) if __name__ == '__main__': import sys app = QApplication(sys.argv) win = MainWindow() win.setWindowTitle("Main Window") win.show() sys.exit(app.exec_())