1 pycahrm 安装
官网 https://www.jetbrains.com/pycharm/
2 python 安装
python.org 选择 python3.9
pyside6 support python3.6-python3.9
3 创建虚拟环境
3.9官方文档 : https://docs.python.org/zh-cn/3/library/venv.html
# python3 -m venv /path/to/new/virtual/environment
python3 -m venv ~/pyside6-env
# 也可以在pycahrm 单独项目配置虚拟环境 我基本都使用这一个环境
4 创建新项目
4.1 创建完环境 安装pyside6
pip install pyuic6
5 配置qt designer 和pyside6-uic
5.1 配置qt designer
ps: qt designer 是图形化qt 设计器,pyside6-uic 可以将 qtdesigner 创建的.ui 文件转化成py文件 的脚本
在虚拟环境下 路径下 找到 designer.app 例如 /Users/{bernie}/pysideenv/lib/python3.9/site-packages/PySide6/Designer.app
working directory 同上
5.2 配置pyside6-uic
program: /Users/bernie/pysideenv/bin/pyside6-uic
arguments: $FileName$ -o $FileNameWithoutExtension$.py
working directory: $FileDir$
6 测试成功
6.1 qtdesigner 画个hello world
打开qt designer
6.1.2 创建 widget text 框 并保存到 项目文件夹下
6.1.3
6.2 使用 pyside6-uic 将ui 文件 转化成 py文件
6.2.2 文件代码
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'untitled.ui'
##
## Created by: Qt User Interface Compiler version 6.1.1
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide6.QtCore import * # type: ignore
from PySide6.QtGui import * # type: ignore
from PySide6.QtWidgets import * # type: ignore
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(800, 518)
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.textEdit = QTextEdit(self.centralwidget)
self.textEdit.setObjectName(u"textEdit")
self.textEdit.setGeometry(QRect(300, 130, 104, 71))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QMenuBar(MainWindow)
self.menubar.setObjectName(u"menubar")
self.menubar.setGeometry(QRect(0, 0, 800, 24))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QStatusBar(MainWindow)
self.statusbar.setObjectName(u"statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
self.textEdit.setHtml(QCoreApplication.translate("MainWindow", u"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'.AppleSystemUIFont'; font-size:13pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">hello world</p></body></html>", None))
# retranslateUi
6.3 启动window
启动需要一个main.py 实例化该对象
整理下文件夹
import sys
from PySide6.QtWidgets import QApplication, QMainWindow
from PySide6.QtCore import QFile
from untitled import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())