[B] Create GUI Application with PySide6 Layouts
basic/layout_1.py
import sys
from typing import Self
from layout_colorwidget import Color
from PySide6.QtWidgets import QApplication, QMainWindow
class MainWindow(QMainWindow):
def __init__(self: Self) -> None:
super().__init__()
self.setWindowTitle("My App")
widget = Color("red")
self.setCentralWidget(widget)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
basic/layout_2a.py
import sys
from typing import Self
from layout_colorwidget import Color
from PySide6.QtWidgets import (
QApplication,
QMainWindow,
QVBoxLayout,
QWidget,
)
class MainWindow(QMainWindow):
def __init__(self: Self) -> None:
super().__init__()
self.setWindowTitle("My App")
layout = QVBoxLayout()
layout.addWidget(Color("red"))
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
basic/layout_2b.py
import sys
from typing import Self
from layout_colorwidget import Color
from PySide6.QtWidgets import (
QApplication,
QMainWindow,
QVBoxLayout,
QWidget,
)
class MainWindow(QMainWindow):
def __init__(self: Self) -> None:
super().__init__()
self.setWindowTitle("My App")
layout = QVBoxLayout()
layout.addWidget(Color("red"))
layout.addWidget(Color("green"))
layout.addWidget(Color("blue"))
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
basic/layout_3.py
import sys
from typing import Self
from layout_colorwidget import Color
from PySide6.QtWidgets import (
QApplication,
QHBoxLayout,
QMainWindow,
QWidget,
)
class MainWindow(QMainWindow):
def __init__(self: Self) -> None:
super().__init__()
self.setWindowTitle("My App")
layout = QHBoxLayout()
layout.addWidget(Color("red"))
layout.addWidget(Color("green"))
layout.addWidget(Color("blue"))
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
basic/layout_colorwidget.py
from PySide6.QtGui import QColor, QPalette
from PySide6.QtWidgets import QWidget
class Color(QWidget):
def __init__(self, color: str) -> None:
super().__init__()
self.setAutoFillBackground(True)
palette = self.palette()
palette.setColor(QPalette.Window, QColor(color))
self.setPalette(palette)
basic/layout_4.py
fimport sys
from typing import Self
from layout_colorwidget import Color
from PySide6.QtWidgets import (
QApplication,
QHBoxLayout,
QMainWindow,
QVBoxLayout,
QWidget,
)
class MainWindow(QMainWindow):
def __init__(self: Self) -> None:
super().__init__()
self.setWindowTitle("My App")
layout1 = QHBoxLayout()
layout2 = QVBoxLayout()
layout3 = QVBoxLayout()
layout2.addWidget(Color("red"))
layout2.addWidget(Color("yellow"))
layout2.addWidget(Color("purple"))
layout1.addLayout(layout2)
layout1.addWidget(Color("green"))
layout3.addWidget(Color("red"))
layout3.addWidget(Color("purple"))
layout1.addLayout(layout3)
widget = QWidget()
widget.setLayout(layout1)
self.setCentralWidget(widget)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
basic/layout_5.py
import sys
from typing import Self
from layout_colorwidget import Color
from PySide6.QtWidgets import (
QApplication,
QHBoxLayout,
QMainWindow,
QVBoxLayout,
QWidget,
)
class MainWindow(QMainWindow):
def __init__(self: Self) -> None:
super().__init__()
self.setWindowTitle("My App")
layout1 = QHBoxLayout()
layout2 = QVBoxLayout()
layout3 = QVBoxLayout()
layout2.addWidget(Color("red"))
layout2.addWidget(Color("yellow"))
layout2.addWidget(Color("purple"))
layout1.addLayout(layout2)
layout1.addWidget(Color("green"))
layout3.addWidget(Color("red"))
layout3.addWidget(Color("purple"))
layout1.addLayout(layout3)
layout1.setContentsMargins(0, 0, 0, 0)
layout1.setSpacing(20)
widget = QWidget()
widget.setLayout(layout1)
self.setCentralWidget(widget)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
basic/layout_6.py
import sys
from typing import Self
from layout_colorwidget import Color
from PySide6.QtWidgets import (
QApplication,
QGridLayout,
QMainWindow,
QWidget,
)
class MainWindow(QMainWindow):
def __init__(self: Self) -> None:
super().__init__()
self.setWindowTitle("My App")
layout = QGridLayout()
layout.addWidget(Color("red"), 0, 0)
layout.addWidget(Color("green"), 1, 0)
layout.addWidget(Color("blue"), 1, 1)
layout.addWidget(Color("purple"), 2, 1)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
basic/layout_7.py
import sys
from typing import Self
from layout_colorwidget import Color
from PySide6.QtWidgets import (
QApplication,
QMainWindow,
QStackedLayout,
QWidget,
)
class MainWindow(QMainWindow):
def __init__(self: Self) -> None:
super().__init__()
self.setWindowTitle("My App")
layout = QStackedLayout()
layout.addWidget(Color("red"))
layout.addWidget(Color("green"))
layout.addWidget(Color("blue"))
layout.addWidget(Color("yellow"))
layout.setCurrentIndex(3)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
basic/layout_8.py
import sys
from typing import Self
from layout_colorwidget import Color
from PySide6.QtWidgets import (
QApplication,
QHBoxLayout,
QMainWindow,
QPushButton,
QStackedLayout,
QVBoxLayout,
QWidget,
)
class MainWindow(QMainWindow):
def __init__(self: Self) -> None:
super().__init__()
self.setWindowTitle("My App")
pagelayout = QVBoxLayout()
button_layout = QHBoxLayout()
self.stacklayout = QStackedLayout()
pagelayout.addLayout(button_layout)
pagelayout.addLayout(self.stacklayout)
btn = QPushButton("red")
btn.pressed.connect(self.activate_tab_1)
button_layout.addWidget(btn)
self.stacklayout.addWidget(Color("red"))
btn = QPushButton("green")
btn.pressed.connect(self.activate_tab_2)
button_layout.addWidget(btn)
self.stacklayout.addWidget(Color("green"))
btn = QPushButton("yellow")
btn.pressed.connect(self.activate_tab_3)
button_layout.addWidget(btn)
self.stacklayout.addWidget(Color("yellow"))
widget = QWidget()
widget.setLayout(pagelayout)
self.setCentralWidget(widget)
def activate_tab_1(self: Self) -> None:
self.stacklayout.setCurrentIndex(0)
def activate_tab_2(self: Self) -> None:
self.stacklayout.setCurrentIndex(1)
def activate_tab_3(self: Self) -> None:
self.stacklayout.setCurrentIndex(2)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
basic/layout_9.py
import sys
from typing import Self
from layout_colorwidget import Color
from PySide6.QtWidgets import (
QApplication,
QMainWindow,
QTabWidget,
)
class MainWindow(QMainWindow):
def __init__(self: Self) -> None:
super().__init__()
self.setWindowTitle("My App")
tabs = QTabWidget()
tabs.setTabPosition(QTabWidget.West)
tabs.setMovable(True)
for n, color in enumerate(["red", "green", "blue", "yellow"]):
tabs.addTab(Color(color), color)
self.setCentralWidget(tabs)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
basic/layout_9b.py
import sys
from typing import Self
from layout_colorwidget import Color
from PySide6.QtWidgets import (
QApplication,
QMainWindow,
QTabWidget,
)
class MainWindow(QMainWindow):
def __init__(self: Self) -> None:
super().__init__()
self.setWindowTitle("My App")
tabs = QTabWidget()
tabs.setDocumentMode(True)
tabs.setTabPosition(QTabWidget.West)
tabs.setMovable(True)
for n, color in enumerate(["red", "green", "blue", "yellow"]):
tabs.addTab(Color(color), color)
self.setCentralWidget(tabs)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()