PySide:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第73行: | 第73行: | ||
==布局== | ==布局== | ||
==多界面== | |||
以下简单示例使用QStackedWidget实现多界面程序。 | |||
<syntaxhighlight lang="python" > | |||
from PySide6.QtCore import QFile | |||
from PySide6.QtGui import QAction,QActionGroup | |||
from PySide6.QtWidgets import QApplication, QMainWindow, QDialog, \ | |||
QWidget, QStackedWidget, QToolBar,QSizePolicy | |||
class Page_1_interface(QWidget): | |||
def __init__(self): | |||
super().__init__() | |||
self.setWindowTitle('界面1') | |||
def refresh(self): | |||
print("重新调回界面1") | |||
class Page_2_interface(QWidget): | |||
def __init__(self): | |||
super().__init__() | |||
self.setWindowTitle('界面2') | |||
class SettingsDialog(QDialog): | |||
def __init__(self, parent=None): # parent参数传递父窗口 | |||
super().__init__(parent) | |||
self.setWindowTitle('设置界面') | |||
class MainWindow(QMainWindow): | |||
def __init__(self): | |||
super().__init__() | |||
self.setWindowTitle('x系统') | |||
# 创建工具栏 | |||
toolbar = QToolBar() | |||
self.addToolBar(toolbar) | |||
toolbar.setMovable(False) | |||
# 创建动作组 | |||
action_group = QActionGroup(self) | |||
action_group.setExclusive(True) | |||
# 创建动作 | |||
self.action_page_1 = QAction("界面1", self) | |||
self.action_page_1.setCheckable(True) | |||
self.action_page_1.setChecked(True) | |||
self.action_page_1.triggered.connect(self.go_page_1) | |||
toolbar.addAction(self.action_page_1) | |||
action_group.addAction(self.action_page_1) | |||
self.action_page_2 = QAction("界面2", self) | |||
self.action_page_2.setCheckable(True) | |||
self.action_page_2.triggered.connect(self.go_page_2) | |||
toolbar.addAction(self.action_page_2) | |||
action_group.addAction(self.action_page_2) | |||
# 弹簧部件(QSpacerItem),以将设置按钮推到右侧 | |||
spacer = QWidget() | |||
spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) | |||
toolbar.addWidget(spacer) | |||
self.action_setting = QAction("设置", self) | |||
toolbar.addAction(self.action_setting) | |||
self.action_setting.triggered.connect(self.show_settings_dialog) | |||
# 创建堆叠窗口 | |||
self.stacked_widget = QStackedWidget() | |||
# 页面1 | |||
self.page_1 = Page_1_interface() | |||
self.stacked_widget.addWidget(self.page_1) # 添加页面1的内容 | |||
# 页面2 | |||
self.page_2 = Page_2_interface() | |||
self.stacked_widget.addWidget(self.page_2) # 添加页面2的内容 | |||
self.setCentralWidget(self.stacked_widget) | |||
def go_page_1(self): | |||
# 跳转到页面1 | |||
self.stacked_widget.setCurrentWidget(self.page_1) | |||
self.action_page_1.setChecked(True) # 高亮按钮 | |||
self.page_1.refresh() # 页面刷新函数 | |||
def go_page_2(self): | |||
# 跳转到页面2 | |||
self.stacked_widget.setCurrentWidget(self.page_2) | |||
self.action_page_2.setChecked(True) # 高亮按钮 | |||
def show_settings_dialog(self): | |||
dialog = SettingsDialog(self) # 传递 self 作为父窗口 | |||
dialog.exec() | |||
if __name__ == "__main__": | |||
app = QApplication([]) | |||
window = MainWindow() | |||
window.setMinimumSize(1000, 600) | |||
window.show() | |||
app.exec() | |||
</syntaxhighlight> | |||
==Designer== | ==Designer== | ||
Qt Designer是一个设计构建用户图形界面的界面化工具。在终端使用命令即可启动: | Qt Designer是一个设计构建用户图形界面的界面化工具。在终端使用命令即可启动: |
2025年2月13日 (四) 01:21的版本
PySide是Qt公司开发的Python版GUI工具包。支持多Windows、Linux和macOS平台。
简介
时间轴
2009年,发布PySide,支持Qt 4。
安装
使用pip安装
pip install pyside6
了解更多 >> PySide 文档:快速开始 PyPi:PySide6
快速入门
from PySide6 import QtCore, QtWidgets
app = QtWidgets.QApplication()
widget = QtWidgets
widget = QtWidgets.QLabel('hello, world', alignment=QtCore.Qt.AlignCenter)
widget.resize(600, 400)
widget.show()
app.exec()
按钮点击时调用函数。
import sys
from PySide6 import QtCore, QtWidgets
class MyWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.button = QtWidgets.QPushButton("点击!")
self.text = QtWidgets.QLabel("Hello World",
alignment=QtCore.Qt.AlignCenter)
self.layout = QtWidgets.QVBoxLayout(self)
self.layout.addWidget(self.text)
self.layout.addWidget(self.button)
self.button.clicked.connect(self.button_clicked)
def button_clicked(self):
self.text.setText("你点击了按钮。")
if __name__ == "__main__":
app = QtWidgets.QApplication([])
widget = MyWidget()
widget.resize(800, 600)
widget.show()
sys.exit(app.exec())
了解更多 >> PySide 文档:快速开始
UI元素
PySide6.QtWidgets模块提供了一组UI元素,用于创建用户界面。
了解更多 >> PySide 文档:QtWidgets
布局
多界面
以下简单示例使用QStackedWidget实现多界面程序。
from PySide6.QtCore import QFile
from PySide6.QtGui import QAction,QActionGroup
from PySide6.QtWidgets import QApplication, QMainWindow, QDialog, \
QWidget, QStackedWidget, QToolBar,QSizePolicy
class Page_1_interface(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('界面1')
def refresh(self):
print("重新调回界面1")
class Page_2_interface(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('界面2')
class SettingsDialog(QDialog):
def __init__(self, parent=None): # parent参数传递父窗口
super().__init__(parent)
self.setWindowTitle('设置界面')
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('x系统')
# 创建工具栏
toolbar = QToolBar()
self.addToolBar(toolbar)
toolbar.setMovable(False)
# 创建动作组
action_group = QActionGroup(self)
action_group.setExclusive(True)
# 创建动作
self.action_page_1 = QAction("界面1", self)
self.action_page_1.setCheckable(True)
self.action_page_1.setChecked(True)
self.action_page_1.triggered.connect(self.go_page_1)
toolbar.addAction(self.action_page_1)
action_group.addAction(self.action_page_1)
self.action_page_2 = QAction("界面2", self)
self.action_page_2.setCheckable(True)
self.action_page_2.triggered.connect(self.go_page_2)
toolbar.addAction(self.action_page_2)
action_group.addAction(self.action_page_2)
# 弹簧部件(QSpacerItem),以将设置按钮推到右侧
spacer = QWidget()
spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
toolbar.addWidget(spacer)
self.action_setting = QAction("设置", self)
toolbar.addAction(self.action_setting)
self.action_setting.triggered.connect(self.show_settings_dialog)
# 创建堆叠窗口
self.stacked_widget = QStackedWidget()
# 页面1
self.page_1 = Page_1_interface()
self.stacked_widget.addWidget(self.page_1) # 添加页面1的内容
# 页面2
self.page_2 = Page_2_interface()
self.stacked_widget.addWidget(self.page_2) # 添加页面2的内容
self.setCentralWidget(self.stacked_widget)
def go_page_1(self):
# 跳转到页面1
self.stacked_widget.setCurrentWidget(self.page_1)
self.action_page_1.setChecked(True) # 高亮按钮
self.page_1.refresh() # 页面刷新函数
def go_page_2(self):
# 跳转到页面2
self.stacked_widget.setCurrentWidget(self.page_2)
self.action_page_2.setChecked(True) # 高亮按钮
def show_settings_dialog(self):
dialog = SettingsDialog(self) # 传递 self 作为父窗口
dialog.exec()
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.setMinimumSize(1000, 600)
window.show()
app.exec()
Designer
Qt Designer是一个设计构建用户图形界面的界面化工具。在终端使用命令即可启动:
pyside6-designer
打包分发
生成可执行文件
名称 | 描述 |
---|---|
Nuitka | 常用示例:nuitka --standalone --plugin-enable=pyside6 --include-data-dir=data=data --windows-disable-console main.py 其中: --standalone --include-data-dir=data=data 数据文件夹名称为data,可以放置数据或配置文件。 --windows-disable-console ,不显示终端输出界面,开始打包可以先取消这个。
|
pyside6-deploy | Pyside 6.4开始包含pyside6-deploy打包工具,是Nuitka的封装。 |
Pyinstaller |
了解更多 >> PySide 文档:部署
资源
官网
- PySide 官网:https://www.qt.io/qt-for-python
- PySide 文档:https://doc.qt.io/qtforpython-6
- PySide Wiki:https://wiki.qt.io/Qt_for_Python