[toc]
# qtefun qt版本的中文组件库
项目地址 https://github.com/duolabmeng6/qtefun
# 快速入门
系统环境
* window 10 64位 或者 ManOS
* python 3.11.3 下载地址:https://www.python.org/downloads/
* pycharm 社区版 下载地址:https://www.jetbrains.com/pycharm/download/#section=windows
* Everything 可装可不装 https://www.voidtools.com/zh-cn/
## 1.安装 pyside6
`pip install pyside6`
## 2.下载 qtefun 项目
* 方式一,直接下载项目(简单) https://github.com/duolabmeng6/qtefun
* 方式二,作为git的子模块(如果qtefun有更新的话 可以随时更新成功) `git submodule add https://github.com/duolabmeng6/qtefun qtefun`
* 方式三,pip 目前qteufn仍处于积极开发的项目,所以建议使用上面的方式
使用 qtefun 需要安装 pyefun
`pip install pyefun`
## 3.配置 pycharm ide的开发环境
### 一,qt官方界面设计的软件 Pyside6-Designer
在pycharm的设置中添加下面的外部工具

工具名称 `Pyside6-Designer`
程序路径 `C:\Users\csuil\Anaconda3\Scripts\pyside6-designer.exe`
工作目录 `$FileDir$`
这里的 `pyside6-designer.exe` 你可以用 Everything 直接搜索得到路径
### 二,uic转换为python代码工具 (Pyside6-UIC2Qtefun)

工具名称 `Pyside6-UIC2Qtefun`
程序路径 `python`
实参 `C:\pyefun\QtEsayDesigner\qtefun\cmd\qt代码加入qtefun.py $FileName$ ui_$FileNameWithoutExtension$.py "C:\Users\csuil\Anaconda3\Scripts\pyside6-uic.exe"`
工作目录 `$FileDir$`
该工具可以实现自动将ui格式文件转换为python代码并且加入qteufn的中文组件库支持
* `C:\pyefun\QtEsayDesigner\qtefun\cmd\qt代码加入qtefun.py` 这个脚本是在 qtefun项目中的
* 这里的 `pyside6-uic.exe` 你可以用 Everything 直接搜索得到路径
* 方式二,也可以在终端运行下面的命令 即可自动监控界面的更新
这种方式需要自己组合命令 较为麻烦 建议配置好上述的工具在 pycahrm中
`python qtefun的绝对路径\\qtefun\\cmd\\qt代码加入qtefun.py app.ui ui_app.py "填绝对路径\\Anaconda3\\Scripts\\pyside6-uic.exe"`
完成上述操作后在 pycharm中的菜单`工具` `external Tools` 就可以打开 qt的设计器

# 开始编写第一个程序
建立项目如下
```
C:\qtefun_learn
└─qtefun
├─cmd
├─组件
└─组件使用例子
```
直接点击创建

随意绘制界面 保存至 `C:\qtefun_learn\app.ui`


看一下 `ui_app.py` 文件 已经帮我们把 qtefun 自动加入了
```
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'app.ui'
##
## Created by: Qt User Interface Compiler version 6.4.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
QMetaObject, QObject, QPoint, QRect,
QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QLabel, QMainWindow, QMenuBar,
QPushButton, QSizePolicy, QStatusBar, QWidget)
from qtefun.组件.标签 import 标签
from qtefun.组件.按钮 import 按钮
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(309, 242)
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.pushButton = QPushButton(self.centralwidget)
self.pushButton.setObjectName(u"pushButton")
self.pushButton.setGeometry(QRect(110, 110, 75, 24))
self.label = QLabel(self.centralwidget)
self.label.setObjectName(u"label")
self.label.setGeometry(QRect(20, 40, 281, 51))
font = QFont()
font.setPointSize(24)
self.label.setFont(font)
self.label.setAlignment(Qt.AlignCenter)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QMenuBar(MainWindow)
self.menubar.setObjectName(u"menubar")
self.menubar.setGeometry(QRect(0, 0, 309, 22))
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.pushButton.setText(QCoreApplication.translate("MainWindow", u"\u7956\u56fd,\u4f60\u597d!", None))
self.label.setText(QCoreApplication.translate("MainWindow", u"\u7956\u56fd,\u4f60\u597d!", None))
# retranslateUi
self.按钮 = 按钮(self.pushButton)
self.标签 = 标签(self.label)
```
编写 main.py 加载ui文件
```
import sys
from PySide6.QtCore import *
from PySide6.QtWidgets import *
import ui_app as ui_app
class 主窗口(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("QTableView Example")
self.resize(415, 200)
# 加载界面 ui_app.py
self.ui = ui_app.Ui_MainWindow()
self.ui.setupUi(self)
self.ui.按钮.绑定事件被按下(self.按钮被按下)
def 按钮被按下(self):
print("按钮被按下")
self.ui.标签.标题 = "祝祖国繁荣昌盛"
if __name__ == '__main__':
app = QApplication(sys.argv)
win = 主窗口()
win.show()
sys.exit(app.exec())
```
运行 main.py 看看效果

