Venster met een Grid layout

Op deze pagina:

De meest universele layout class is de grid layout. Deze layout verdeeld de ruimte in rijen en kolommen. We gebruiken hiervoor de QGridLayout class.


#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout

class Venster(QWidget):

    def __init__(self):
        super(Venster, self).__init__()

        self.initUI()

    def initUI(self):

        grid = QGridLayout()
        self.setLayout(grid)

        namen = ['C', 'AC', 'MS', 'MR', 'M+',
                '7', '8', '9', '/', 'sqrt',
                '4', '5', '6', '*', '%',
                '1', '2', '3', '-', '',
                '0', '.', '+/-', '+','=']

        posities = [(i,j) for i in range(5) for j in range(5)]

        for positie, naam in zip(posities, namen):

            if naam == '':
                continue
            button = QPushButton(naam)
            grid.addWidget(button, *positie)

        self.move(300, 150)
        self.setWindowTitle('Rekenmachine')
        self.show()

def main():
    app = QApplication(sys.argv)
    window = Venster()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

rekenmachine

Widgets spreiden over meerdere rijen en kolommen

Widgets kunnen gespreid worden over meerdere rijen en of kolommen.


#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QLabel, QLineEdit, QTextEdit

class Venster(QWidget):

    def __init__(self):
        super(Venster, self).__init__()

        self.initUI()

    def initUI(self):

        titel = QLabel('Titel')
        url = QLabel('URL')
        omschrijving = QLabel('Omschrijving')

        titelEdit = QLineEdit()
        urlEdit = QLineEdit()
        omschrijvingEdit = QTextEdit()

        grid = QGridLayout()
        grid.setSpacing(10)

        grid.addWidget(titel, 1, 0)
        grid.addWidget(titelEdit, 1, 1)

        grid.addWidget(url, 2, 0)
        grid.addWidget(urlEdit, 2, 1)

        grid.addWidget(omschrijving, 3, 0)
        grid.addWidget(omschrijvingEdit, 3, 1, 5, 1)

        self.setLayout(grid)

        self.setGeometry(400, 400, 400, 300)
        self.setWindowTitle('Websites')
        self.show()

def main():

    app = QApplication(sys.argv)
    window = Venster()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

venster met meerdere kolommen

 

Verwante artikelen