前言
PySide6 是用于Python的一个跨平台GUI库,它提供了Qt框架的Python绑定。在PySide6中,QMainWindow
,QWidget
, 和 QDialog
都是非常常用的类,它们各自有特定的应用场景和功能。
🚀🚀🚀 Pyside6实战教程专栏目录入口:点击跳转
目录
- 一、QMainWindow
- 创建方式
- 二、QWidget
- 三、QDialog
一、QMainWindow
QMainWindow 是一个主窗口类,通常用于创建应用程序的主要窗口。它包含了菜单栏、工具栏、状态栏以及一个中心区域。QMainWindow 提供了丰富的功能和灵活性,适用于那些需要复杂用户界面的应用程序。
特点:
- 可以包含菜单栏 (QMenuBar)、工具栏 (QToolBar) 和状态栏 (QStatusBar)
- 中心区域可以设置一个中心部件 (setCentralWidget() 方法)
- 支持多个视图 (通过 QSplitter 或 QTabWidget 实现)
创建方式
使用QT Designer创建Main Window
它分别QMenuBar(菜单栏)、QWidget(中央控件)、QStatusBar(状态栏)
也可以使用代码完成创建:
import sys
from PySide6.QtWidgets import QMainWindow, QApplication, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setup_ui()
def setup_ui(self):
self.setWindowTitle("主窗口")
self.setCentralWidget(QWidget())
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec())
二、QWidget
QWidget 是所有用户界面元素的基本类。它可以作为独立的窗口使用,也可以作为更复杂的控件的基类。QWidget 是一个非常基础的类,不包含任何预设的界面组件。
代码创建:
"""
Date: 2024-08-25 01:57:33
LastEditors: xujiayue0721
LastEditTime: 2024-08-25 01:57:36
"""
import sys
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
class SimpleWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Simple Window")
layout = QVBoxLayout()
button = QPushButton("Click me!")
layout.addWidget(button)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = SimpleWindow()
win.show()
sys.exit(app.exec())
三、QDialog
QDialog 是一个用于创建对话框的类。对话框通常是暂时性的,并且通常用来收集用户的信息或者确认一些动作。QDialog 通常有一个模态行为,即当对话框打开时,用户不能与主窗口交互,直到对话框关闭。
代码创建:
from PySide6.QtWidgets import QDialog, QApplication, QVBoxLayout, QPushButton, QDialogButtonBox
class Dialog(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("Dialog")
# 创建布局
layout = QVBoxLayout(self)
# 添加操作按钮
layout.addWidget(QPushButton("Do something"))
# 创建并添加按钮框
button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
button_box.accepted.connect(self.accept)
button_box.rejected.connect(self.reject)
layout.addWidget(button_box)
if __name__ == "__main__":
app = QApplication([])
dialog = Dialog()
result = dialog.exec()
print("Dialog accepted" if result else "Dialog rejected")
app.exec()