使用Python+Pyside6库开发GUI,在继承QMainWindow类的主窗口上,和继承QWidget类的主窗口上,添加一个布局管理器的是不同的。
继承QMainWindow
类的窗口通常用于创建具有菜单栏、工具栏和状态栏的主窗口应用程序。它提供了更多的功能和灵活性,但在添加布局管理器时需要使用中央窗口部件(central widget)。
以下是使用QMainWindow
和布局管理器的基本步骤:
- 创建一个继承自
QMainWindow
的类。 - 在类的初始化方法中,创建一个中央窗口部件(通常是
QWidget
类型)。 - 创建一个布局管理器(例如
QVBoxLayout
、QHBoxLayout
等),并将其设置为中央窗口部件的布局。 - 添加所需的控件到布局管理器中。
- 将中央窗口部件设置为主窗口的中央窗口部件。
下面是一个简单的示例代码:
import sys
from PySide6.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QPushButton
class myMainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建中央窗口部件
central_widget = QWidget()
# 创建布局管理器
layout = QVBoxLayout()
# 添加控件到布局管理器中
button = QPushButton("单击我")
layout.addWidget(button)
# 将布局管理器设置为中央窗口部件的布局
central_widget.setLayout(layout)
# 将中央窗口部件设置为主窗口的中央窗口部件
self.setCentralWidget(central_widget)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = myMainWindow()
win.show()
sys.exit(app.exec())
可以这样理解,继承QMainWindow类的对象窗口,本身就有一个布局管理器,管理菜单,工具栏,还有状态栏等布局控件,同时有一个中央窗口部件的布局,所以再新增的布局对象(比如水平及垂直或网格等布局管理对象),不能直接添加到主窗口(主窗口不能成为新增加的布局管理对象的父类),只能添加到主窗口的中央窗口部件中。
与之相比,当你继承QWidget
类时,你直接在该窗口上添加布局管理器,而不需要创建中央窗口部件。QWidget
通常用于创建简单的对话框或没有菜单栏和工具栏的窗口。
以下是使用QWidget
和布局管理器的基本步骤:
- 创建一个继承自
QWidget
的类。 - 在类的初始化方法中,创建一个布局管理器(例如
QVBoxLayout
、QHBoxLayout
等)。 - 添加所需的控件到布局管理器中。
- 将布局管理器设置为窗口的布局。
下面是一个简单的示例代码:
import sys
from PySide6.QtWidgets import QWidget, QVBoxLayout, QPushButton
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# 创建布局管理器
layout = QVBoxLayout()
# 添加控件到布局管理器中
button = QPushButton("单击我")
layout.addWidget(button)
# 将布局管理器设置为窗口的布局
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MyWidget()
win.show()
sys.exit(app.exec())