Python Forum
[PyQt] QGridLayout, QProgressBar bar fills widgets shrink
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyQt] QGridLayout, QProgressBar bar fills widgets shrink
#2
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_())
Reply


Messages In This Thread
RE: QGridLayout, QProgressBar bar fills widgets shrink - by Axel_Erfurt - Nov-18-2022, 09:29 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  [PyQt] QGridLayout and stretching widgets when maximized malonn 1 2,098 Oct-05-2022, 09:58 AM
Last Post: malonn

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020