QMainWindow
通常的做法是首先创建一个 QMainWindow 实例,然后创建一个或多个 QWidget 作为中心部件,并在这些中心部件中添加所需的小部件和布局。
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
central widget
QMainWindow 类提供了一个中心部件(central widget)的概念,它是窗口的主要内容区域。通常把其他的小部件(widgets)和布局(layouts)放在这个中心部件中,以构建窗口的用户界面。
def initUI(self):
main_layout = QHBoxLayout() # 创建主布局
central_widget = QWidget() # 创建中心部件
central_widget.setLayout(main_layout) # 将布局设置为中心部件的布局
self.setCentralWidget(central_widget) # 设置窗口的中心部件
在容器中创建控件
QWidget 是 PyQt5 中所有用户界面对象的基类,它可以包含其他小部件和布局,也可以作为其他小部件的容器。比如创建一个按钮容器,然后在容器中创建按钮:
# 创建 button_container 并设置其布局
button_container = QWidget()
button_container.setFixedSize(150, 300)
button_container.setStyleSheet("QWidget { border: 1px solid blue; }")
button_layout = QVBoxLayout()
button_container.setLayout(button_layout)
# 创建按钮添加到垂直布局
self.buttons = [QPushButton(f'Button{i+1}') for i in range(3)]
for button in self.buttons:
button.setFixedSize(50, 50)
button_layout.addWidget(button)
这样做的好处是提供了一个清晰的结构来组织和管理用户界面元素