import sys
from PyQt5.QtWidgets import QDesktopWidget, QApplication, QMainWindow, QWidget, QHBoxLayout, QPushButton
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.initUI()
def initUI(self):
self.resize(300, 200)
self.setWindowTitle("QHBoxLayout水平布局")
hlayout = QHBoxLayout()
hlayout.addWidget(QPushButton('1'))
hlayout.addWidget(QPushButton('2'))
hlayout.addWidget(QPushButton('3'))
hlayout.addWidget(QPushButton('4'))
mainwidget = QWidget()
mainwidget.setLayout(hlayout)
self.setCentralWidget(mainwidget)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())

import sys
from PyQt5.QtWidgets import QDesktopWidget, QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 300, 300)
self.setWindowTitle("QVBoxLayout垂直布局")
vlayout = QVBoxLayout()
vlayout.addWidget(QPushButton('1'))
vlayout.addWidget(QPushButton('2'))
vlayout.addWidget(QPushButton('3'))
vlayout.addWidget(QPushButton('4'))
vlayout.addWidget(QPushButton('5'))
mwidget = QWidget()
mwidget.setLayout(vlayout)
self.setCentralWidget(mwidget)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())

import sys
from PyQt5.QtWidgets import QDesktopWidget, QMainWindow, QApplication, QGridLayout, QPushButton, QWidget
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.initUI()
def initUI(self):
self.resize(500, 200)
self.setWindowTitle("GridLayout栅格布局")
gridlayout = QGridLayout()
gridlayout.addWidget(QPushButton("00"), 0, 0)
gridlayout.addWidget(QPushButton("01"), 0, 1)
gridlayout.addWidget(QPushButton("02"), 0, 2)
gridlayout.addWidget(QPushButton("10"), 1, 0)
gridlayout.addWidget(QPushButton("11"), 1, 1)
gridlayout.addWidget(QPushButton("12"), 1, 2)
gridlayout.addWidget(QPushButton("20"), 2, 0)
gridlayout.addWidget(QPushButton("21"), 2, 1)
gridlayout.addWidget(QPushButton("22"), 2, 2)
mwidget = QWidget()
mwidget.setLayout(gridlayout)
self.setCentralWidget(mwidget)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.initUI()
def initUI(self):
self.resize(400, 200)
self.setWindowTitle('FormLayout表单布局')
formlayout = QFormLayout()
formlayout.setLabelAlignment(Qt.AlignRight)
normalLineEdit = QLineEdit()
normalLineEdit.setAlignment(Qt.AlignRight)
normalLineEdit.setPlaceholderText("请输入密码Normal")
normalLineEdit.setEchoMode(QLineEdit.Normal)
noechoLineEdit = QLineEdit()
noechoLineEdit.setAlignment(Qt.AlignLeft)
noechoLineEdit.setPlaceholderText("请输入密码NoEcho")
noechoLineEdit.setEchoMode(QLineEdit.NoEcho)
passwordLineEdit = QLineEdit()
passwordLineEdit.setAlignment(Qt.AlignRight)
passwordLineEdit.setPlaceholderText("请输入密码Password")
passwordLineEdit.setEchoMode(QLineEdit.Password)
passwordEchoOnEdit = QLineEdit()
passwordEchoOnEdit.setAlignment(Qt.AlignLeft)
passwordEchoOnEdit.setPlaceholderText("请输入密码PasswordEcho")
passwordEchoOnEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit)
formlayout.addRow("Normal:", normalLineEdit)
formlayout.addRow("EchoMode:", noechoLineEdit)
formlayout.addRow("Password:", passwordLineEdit)
formlayout.addRow("Password Echo:", passwordEchoOnEdit)
mwidget = QWidget()
mwidget.setLayout(formlayout)
self.setCentralWidget(mwidget)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())


import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QStackedLayout, QWidget, QPushButton, QVBoxLayout, QHBoxLayout,
QToolBar, QToolButton, QColorDialog, QFontDialog, QFileDialog, QMessageBox, QStyle)
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt
class MyStackedLayout(QMainWindow):
def __init__(self, parent=None):
super(MyStackedLayout, self).__init__(parent)
self.initUI()
def initUI(self):
self.resize(800, 480)
self.move(300, 300)
self.setWindowTitle("StackedLayout堆栈布局")
toolBar = QToolBar(self) # 创建ToolBar
self.addToolBar(Qt.LeftToolBarArea, toolBar) # 添加ToolBar到主界面
# 创建一个ToolButton
btnColor = QToolButton(self)
btnColor.setText("颜色对话框")
btnColor.setIcon(QApplication.style().standardIcon(QStyle.SP_ComputerIcon))
btnColor.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
btnColor.clicked.connect(lambda: self.onButtonClicked(0))
toolBar.addWidget(btnColor) # ToolBar添加ToolButton按钮
btnFont = QToolButton(self)
btnFont.setText("字体对话框")
btnFont.setIcon(QApplication.style().standardIcon(QStyle.SP_DesktopIcon))
btnFont.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
btnFont.clicked.connect(lambda: self.onButtonClicked(1))
toolBar.addWidget(btnFont)
btnFile = QToolButton(self)
btnFile.setText("文件对话框")
btnFile.setIcon(QApplication.style().standardIcon(QStyle.SP_DialogOpenButton))
btnFile.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
btnFile.clicked.connect(lambda: self.onButtonClicked(2))
toolBar.addWidget(btnFile)
self.mainlayout = QStackedLayout()
self.mainlayout.addWidget(QColorDialog(self))# StackedLayout添加一个Widget, index为0
self.mainlayout.addWidget(QFontDialog(self)) # StackedLayout添加一个Widget, index为1
self.mainlayout.addWidget(QFileDialog(self)) # StackedLayout添加一个Widget, index为2
self.mainwidget = QWidget()
self.mainwidget.setLayout(self.mainlayout)
self.setCentralWidget(self.mainwidget)
def onButtonClicked(self, index):
if index < self.mainlayout.count():
self.mainlayout.setCurrentIndex(index)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MyStackedLayout()
win.show()
sys.exit(app.exec_())

QStackedWidget和QStackedLayout用法类似,
QStackedWidget直接创建的是Widget对象
QStackedLayout创建的是Layout布局,需要添加到QWidget对象之后才能设置为中心控件。
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QMainWindow, QStackedWidget, QStyle, QToolBar, QToolButton, QColorDialog, QFileDialog, QFontDialog
class MyStackedWidget(QMainWindow):
def __init__(self, parent=None):
super(MyStackedWidget, self).__init__(parent)
self.initUI()
def initUI(self):
self.resize(800, 480)
self.setWindowTitle("StackedWidget控件")
toolBar = QToolBar(self)
self.addToolBar(Qt.LeftToolBarArea,toolBar)
btnColor = QToolButton(self)
btnColor.setText("颜色对话框")
btnColor.setIcon(QApplication.style().standardIcon(QStyle.SP_ArrowRight))
btnColor.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
btnColor.clicked.connect(lambda: self.onToolButtonClicked(0))
toolBar.addWidget(btnColor)
btnFont = QToolButton(self)
btnFont.setText("字体对话框")
btnFont.setIcon(QApplication.style().standardIcon(QStyle.SP_ArrowBack))
btnFont.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
btnFont.clicked.connect(lambda: self.onToolButtonClicked(1))
toolBar.addWidget(btnFont)
btnFile = QToolButton(self)
btnFile.setText("文件对话框")
btnFile.setIcon(QApplication.style().standardIcon(QStyle.SP_ArrowDown))
btnFile.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
btnFile.clicked.connect(lambda: self.onToolButtonClicked(2))
toolBar.addWidget(btnFile)
self.mainwidget = QStackedWidget(self)
self.mainwidget.addWidget(QColorDialog(self))
self.mainwidget.addWidget(QFontDialog(self))
self.mainwidget.addWidget(QFileDialog(self))
self.setCentralWidget(self.mainwidget)
def onToolButtonClicked(self, index):
if index < self.mainwidget.count():
self.mainwidget.setCurrentIndex(index)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MyStackedWidget()
win.show()
sys.exit(app.exec_())
