In this Python PyQt5 lesson we are going to learn about Python PyQt5 QHBoxLayout, basically there are different types of layout management that you can use in PyQt5.we have QVBoxLayout, QHBoxLayout and QGridLayout. particularly in this lesson we are talking about HBoxLayout, so by using hboxlayout you can align your widgets horizontally. we create our layout in two ways, the first way is that we can do by coding and the second way is by using Qt Designer.
PyQt5 QHBoxLayout by Coding
First we need to import our required classes and the important one is our QHBoxLayout, using QHBoxLayout class we can align our widgets horizontally.
1 2 3 |
from PyQt5.QtWidgets import QApplication,QWidget,QHBoxLayout, QPushButton import sys from PyQt5.QtGui import QIcon |
These are used for creating title, icon and the geometry of the window, basically the geometry of the window is the x,y position, width and height of the window.
1 2 3 |
self.setGeometry(200,200, 400,300) self.setWindowTitle("PyQt5 HBoxLayout") self.setWindowIcon(QIcon('python.png')) |
This is the code that we have created our QHBoxLayout object.
1 |
hbox = QHBoxLayout() |
We are going to add four QPushButton in our HBoxLayout, first you need to create the object of QPushButton.
1 |
btn1 = QPushButton("Click One") |
After creating of your buttons, you need to add the buttons in HBoxLayout. you can use addWidget() method.
1 2 3 4 |
hbox.addWidget(btn1) hbox.addWidget(btn2) hbox.addWidget(btn3) hbox.addWidget(btn4) |
Now you need to set the layout for the main window, if you don’t do this you will not see any widgets in your window.
1 |
self.setLayout(hbox) |
This is the complete code for How to Create HBoxLayout in PyQt5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
from PyQt5.QtWidgets import QApplication,QWidget,QHBoxLayout, QPushButton import sys from PyQt5.QtGui import QIcon class Window(QWidget): def __init__(self): super().__init__() self.setGeometry(200,200, 400,300) self.setWindowTitle("PyQt5 HBoxLayout") self.setWindowIcon(QIcon('python.png')) hbox = QHBoxLayout() btn1 = QPushButton("Click One") btn2 = QPushButton("Click Two") btn3 = QPushButton("Click Three") btn4 = QPushButton("Click Four") hbox.addWidget(btn1) hbox.addWidget(btn2) hbox.addWidget(btn3) hbox.addWidget(btn4) self.setLayout(hbox) app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) |
Run the complete code and this is the result
PyQt5 HBoxLayout By Qt Designer
Now we want to create our layout using Qt Designer , so you need to open your Qt Designer, you can write pyqt5designer in your terminal, after opening create a new Widget window. and add four QPushButton, after that select all buttons and right click on them choose Layout and Layout Horizontally.
After doing this, your all widgets will be aligned horizontally, also you need to do the same for the window, right click on the window and choose layout vertically, save your ui file, iam going to call it hboxlayout.ui , and copy the file in your working directory.
Now we are going to load our ui file. make a new python file and call it LoadHBox.py. we are going to use uic module for loading our ui file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
from PyQt5.QtWidgets import QApplication, QWidget import sys from PyQt5 import uic class UI(QWidget): def __init__(self): super().__init__() uic.loadUi('hboxlayout.ui', self) app = QApplication([]) window = UI() window.show() app.exec_() |
Run the python code and this is the result.