[AI Development Lab] 【deepin插件开发活动】广播教学软件
Tofloor
poster avatar
136******47
deepin
2026-08-14 00:48
Author

sfzy/广播教学deepin

在windows上使用codebuddy完成广播教学的项目,测试完成后,使用workbuddy添加deepin skills,使用workbuddy调用skill,将项目转成可在deepin中使用的程序

智慧课堂广播系统 · deepin 打包工程

把 Windows 版 Python + PySide6 局域网广播教学项目移植为 deepin v25/ UOS v20(venv版本打包、安装、运行,测试通过) 原生应用。 提供 两种互相独立、可并存 的 Linux 分发方案,以及一个原始 Windows 备份。

目录结构

目录 说明 方案
ClassroomBroadcast - bak3/ 原始 Windows 版(参考基线,不改动)
ClassroomBroadcast-deepin/ 单文件版:PyInstaller --onefile 打出单个 ELF onefile
ClassroomBroadcast-deepin-venv/ 源生/venv 版:源码 + 内置 Python 虚拟环境 非单文件
目录 说明 技术栈 / 方案
ClassroomBroadcast - bak3/ 原始 Windows 版(参考基线,不改动) Python + PySide6(Windows)
ClassroomBroadcast-deepin/ 单文件版:PyInstaller --onefile 打出单个 ELF Python + PySide6(Fusion 风格)
ClassroomBroadcast-deepin-venv/ venv 版:源码 + 内置 Python 虚拟环境 Python + PySide6(Fusion 风格)
ClassroomBroadcast-deepin-dtk/ DTK 参赛版:C++ / DTK6 原生应用(deepin 原生外观) C++ / DTK6(基于 dtk-development Skill)
ClassroomBroadcast-deepin-appearance/ 外观探测存档:
确认 pip PySide6 与系统 DTK 主题 ABI 不兼容,
结论为「保持 Fusion」
—(仅存档,不打包)

使用官方 dtk-development Skill(deepin Skills 项目的一部分)进行开发。 开发过程中该 Skill 提供了以下关键规范,代码均严格遵循:

Skill 提供的规范 在本项目中的体现
DApplication 入口(替代 QApplication,含单实例/翻译/产品信息) main_teacher.cpp / main_student.cpp
DMainWindow + DTitlebar 原生窗口 teacherwindow.cpp / studentwindow.cpp
DLogManager 日志规范(dtkcore 注册 Appender,应用用 Qt 日志宏) 两个 main_*.cpp
DTK6 控件(DSwitchButton / DComboBox / DSpinBox / DLabel / DPushButton) 教师端与学生端 UI
debian/control 写法(Build-Depends 用 -dev,运行时 libdtk6*${shlibs:Depends} 自动推导) debian/control


注意:deepin 25 实际装的 DTK6 头文件和 dtk-development Skill 的参考示例有细微差异(比如 setOOMScoreAdj 示例写静态、实际是非静态)。我已按真机编译器的判据改,并以对象调用规避两种写法。

新错误很明确:#include 这个文件在你的 DTK6 上根本不存在——说明 DTK6 里 DLogManager 的转发头文件名不是这个(可能改名、或功能合并、或需走别的 include 路径)。我查一下 dtk-development Skill 里的权威用法,确认正确的 include 写法,而不是瞎猜。

Skill 的 application.md 示例(第 37 行)仍然写的是静态 DApplication::setOOMScoreAdj(0) —— 进一步证实 Skill 文档与 deepin 25 实际 DTK6 头文件有差异。它也没给出 DLogManager 的 include 写法。我读一下 log.md 找权威 include:

找到根因了。Skill 的 log.md#include 就带出 DLogManager,但你的 deepin 25 实际 DTK6 里 并不声明 DLogManager,也没有 这个转发头文件 —— 这是 Skill 文档与当前 DTK6 版本脱节(和之前 setOOMScoreAdj 由静态变非静态是同一类问题)。

DLogManager 只是日志便利封装,删掉不影响任何功能(Qt 默认的 qDebug/qWarning 不需要它也能输出)。我先把它从两个 main 里移除,让你能立即编译过;同时给你一条查找命令,确认该类到底还在不在,在的话我再用正确的头文件加回来。

先确认这个类在你的系统里到底叫什么头文件:

bash

find /usr/include -iname '*logmanager*' 2>/dev/null
dpkg -L libdtk6core-dev | grep -i log

把输出贴给我。如果有 dlogmanager.h(或 DtkCore/dlogmanager.h),我就用正确的 include 把 registerConsoleAppender/FileAppender 接回去;如果系统里压根没这个类,那说明这个版本已经砍掉了它,保持现状即可。

/usr/include/dtk6/DCore/LogManager.h
/usr/include/dtk6/DCore/DLog
/usr/include/dtk6/DCore/LogManager.h
/usr/share/doc/libdtk6core-dev/changelog.gz

用户找到了正确的 DTK6 日志头文件路径:/usr/include/dtk6/DCore/LogManager.h,DLog 也在 /usr/include/dtk6/DCore/DLog。我来确认正确的 include 写法和 API,然后改回 main 文件。

找到了根因:这是一个 DTK6 头文件路径变更 问题——DLogManager 实际位于 /usr/include/dtk6/DCore/LogManager.h,而不是旧的扁平路径 。同时 DLog 也在 DCore/ 下。之前误删其实不必,现在用正确路径接回即可。

已定位并修复。问题不是类名,而是 DTK6 在 deepin 25 的 include 根设置:它把各个模块子目录(DCore/DWidget/DGui/)本身作为 include 搜索根,所以裸名 都能用,但写成 (多套一层 DCore/)反而找不到文件。



PixPin_2026-08-12_20-14-00.png

image.png

image.png

PixPin_2026-08-13_21-46-33.png
image.png

dtk版初步跑通了,但是……
image.png

Reply Favorite View the author
All Replies
avatar
骑🐖追帅哥bot
Moderator
17 hours ago
#1

能跑uos吗

Reply View the author
avatar
136******47
deepin
17 hours ago
#2
骑🐖追帅哥bot

能跑uos吗

刚试了,装上没问题,运行报错,目前手上是uos20

我试试调整

原来是这样:不是一次打包到处能用

两个关键坑(务必注意):

  1. UOS 20 默认 python3 很可能是 3.7,而 PySide6-Essentials / opencv / numpy 新版都要求 ≥ 3.8。不升级就 pip install 失败。必须先把 UOS 20 的 python3 弄成 ≥ 3.8(推荐 3.9/3.11)。
  2. 构建脚本的 Depends: python3(第 173 行)指向系统默认 python3。所以 UOS 20 上构建用的那个 python 版本,必须就是系统 python3 对应的版本(才能提供对应的 libpython3.x.so 运行时)。不要构建用 3.11、系统默认却还是 3.7,那装完运行会找不到 libpython3.11.so

根目录现成的两个 .deb 是 deepin 上打的,不要直接拷到 UOS 20 用,必须在 UOS 20 上重打。

另一个提醒:DTK6 版在 UOS 20 也跑不了

你之前做的 ClassroomBroadcast-deepin-dtk(C++/DTK6)依赖 libdtk6widget + Qt6,而 UOS 20 是 DTK5 / Qt5,连运行时都没有。要兼容 UOS 20 得另做 Qt5/DTK5 版,且同样要在 UOS 20 上构建。

Linux 桌面长期"发展不起来"的核心体验痛点,就是依赖链:装 A 提示先装 B,B 又提示先装 C,而且这些提示默认假设你是能手查文档、配环境的高手。

Reply View the author
avatar
ad1998
deepin
5 hours ago
#3
136******47

刚试了,装上没问题,运行报错,目前手上是uos20

我试试调整

原来是这样:不是一次打包到处能用

两个关键坑(务必注意):

  1. UOS 20 默认 python3 很可能是 3.7,而 PySide6-Essentials / opencv / numpy 新版都要求 ≥ 3.8。不升级就 pip install 失败。必须先把 UOS 20 的 python3 弄成 ≥ 3.8(推荐 3.9/3.11)。
  2. 构建脚本的 Depends: python3(第 173 行)指向系统默认 python3。所以 UOS 20 上构建用的那个 python 版本,必须就是系统 python3 对应的版本(才能提供对应的 libpython3.x.so 运行时)。不要构建用 3.11、系统默认却还是 3.7,那装完运行会找不到 libpython3.11.so

根目录现成的两个 .deb 是 deepin 上打的,不要直接拷到 UOS 20 用,必须在 UOS 20 上重打。

另一个提醒:DTK6 版在 UOS 20 也跑不了

你之前做的 ClassroomBroadcast-deepin-dtk(C++/DTK6)依赖 libdtk6widget + Qt6,而 UOS 20 是 DTK5 / Qt5,连运行时都没有。要兼容 UOS 20 得另做 Qt5/DTK5 版,且同样要在 UOS 20 上构建。

Linux 桌面长期"发展不起来"的核心体验痛点,就是依赖链:装 A 提示先装 B,B 又提示先装 C,而且这些提示默认假设你是能手查文档、配环境的高手。

可以让AI试试玲珑包格式和appimage格式

Reply View the author
avatar
136******47
deepin
4 hours ago
#4
ad1998

可以让AI试试玲珑包格式和appimage格式

uos v20是因为python3.7的问题,现在调整了代码,可以运行了

但现在的问题是这是用python实现的。

活动可能想用dtk,就是deepin的工具原生来做,虽然目前不太符合活动要求,但至少在deepin/uos中可以用了,不过现在就是没什么都让ai造,比纯人来做门槛低了,效率高了

用skill来做纯dtk的程序,目前在尝试,效果不太理想,原以为给个例子,调用skill就能行,实际不是,毕竟纯python那一版也是写了快一周才各项基础功能才能用,声音和字幕还没有调试

但是我个人感觉ai有资料是能做出来的,这个技术路线是可以跑通的

Reply View the author