开源解析:基于 Python + Qt 打造智能应用时长统计工具 —— 你的数字生活分析师
在数字化生活日益普及的今天,如何了解自己每天使用各种应用的时长、行为习惯,已成为许多人关注的话题。尤其对于提高工作效率、合理规划时间等方面,了解自己的数字生活尤为重要。本文将解析如何基于 Python 和 Qt 开发一个 智能应用时长统计工具,成为你数字生活的分析师。
项目概述
我们的目标是开发一个跨平台的应用时长统计工具,通过记录和统计用户的应用使用时长、频次等信息,帮助用户分析自己的数字行为,从而帮助调整日常生活和工作模式。
开发框架与工具
- Python:作为开发语言,Python具有跨平台的优势,丰富的第三方库,适合快速开发。
- Qt:用于开发GUI(图形用户界面)应用。PyQt或PySide是Python与Qt框架的绑定库,能够快速构建用户友好的界面。
- SQLite:用于本地存储用户的数据,如应用使用时长、频次等。
功能简介
- 记录应用使用时长:工具能够自动记录每个应用程序的使用时长。
- 时长统计:生成时长统计报告,分析哪些应用占用了最多的时间。
- 分类管理:根据不同的应用类型(如工作、娱乐、社交等),进行分类统计。
- 数据可视化:通过图表、曲线等形式,帮助用户清晰地看到自己的使用习惯。
- 通知与提醒:定时提醒用户合理使用应用,避免过度沉迷。
1. 构建 Python + Qt 的桌面应用界面
首先,我们使用 PyQt5 或 PySide2 结合 Python 来构建图形用户界面。界面需要简洁直观,让用户能够快速查看其数字生活数据。
pip install pyqt5
创建一个简单的窗口界面:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('智能应用时长统计工具')
self.setGeometry(300, 300, 600, 400)
self.layout = QVBoxLayout()
self.label = QLabel('欢迎使用数字生活分析师!', self)
self.layout.addWidget(self.label)
self.setLayout(self.layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
这段代码展示了如何使用 PyQt5 创建一个简单的窗口,并在其中放置一个文本标签。
2. 记录应用使用时长
2.1 获取系统进程信息
为了能够准确地记录应用使用时长,我们需要获取系统当前正在运行的应用程序。我们可以利用 Python 的 psutil
库来实现这一功能。
pip install psutil
通过 psutil
获取系统进程并记录哪些应用在后台运行:
import psutil
def get_running_apps():
running_apps = []
for process in psutil.process_iter(['pid', 'name', 'create_time']):
try:
app = process.info
running_apps.append(app)
except psutil.NoSuchProcess:
continue
return running_apps
# 获取当前运行的应用
apps = get_running_apps()
for app in apps:
print(f"应用名称: {app['name']}, PID: {app['pid']}, 启动时间: {app['create_time']}")
该代码片段会列出所有正在运行的进程及其相关信息。接下来,我们需要将这些数据与具体的应用时长进行匹配。
2.2 记录应用时长
为了记录应用的使用时长,我们需要定期查询系统的进程,并记录每个应用启动的时间和结束的时间。使用 SQLite 数据库存储应用时长信息。
pip install sqlite3
创建一个 SQLite 数据库来存储时长数据:
import sqlite3
from datetime import datetime
# 连接到 SQLite 数据库(如果没有则会创建)
conn = sqlite3.connect('app_usage.db')
cursor = conn.cursor()
# 创建表格
cursor.execute('''CREATE TABLE IF NOT EXISTS app_usage
(app_name TEXT, start_time TEXT, end_time TEXT)''')
def record_app_usage(app_name, start_time, end_time):
cursor.execute('INSERT INTO app_usage (app_name, start_time, end_time) VALUES (?, ?, ?)',
(app_name, start_time, end_time))
conn.commit()
# 示例:记录一个应用的使用时长
record_app_usage("Chrome", "2025-07-04 09:00:00", "2025-07-04 09:30:00")
# 查询记录
cursor.execute('SELECT * FROM app_usage')
print(cursor.fetchall())
conn.close()
3. 时长统计与分析
通过 SQLite 数据库,我们能够存储所有应用的使用记录。接下来,通过对这些数据进行分析,我们可以给出应用的使用时长统计。
例如,按日期、应用类别进行分组统计:
def get_usage_statistics():
cursor.execute('''SELECT app_name, SUM(strftime('%s', end_time) - strftime('%s', start_time)) AS total_seconds
FROM app_usage
GROUP BY app_name''')
result = cursor.fetchall()
for app, total_seconds in result:
print(f"{app} 使用总时长: {total_seconds // 60} 分钟")
4. 数据可视化与图表展示
使用 Matplotlib 和 PyQt 集成数据可视化,让用户能够更直观地查看应用的使用时长。我们可以通过条形图、饼图等形式展示不同应用的使用比例。
pip install matplotlib
示例:绘制应用时长的饼图
import matplotlib.pyplot as plt
# 假设已有应用使用时长数据
apps = ['Chrome', 'Slack', 'Visual Studio Code']
time_spent = [120, 90, 150]
plt.pie(time_spent, labels=apps, autopct='%1.1f%%', startangle=90)
plt.title('应用使用时长统计')
plt.show()
将 Matplotlib
与 PyQt 结合,实现数据可视化展示:
from PyQt5.QtWidgets import QVBoxLayout, QGraphicsView, QGraphicsScene
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('智能应用时长统计工具')
self.setGeometry(300, 300, 800, 600)
self.layout = QVBoxLayout()
# 创建图形视图容器
self.canvas = FigureCanvas(plt.figure())
self.layout.addWidget(self.canvas)
self.setLayout(self.layout)
self.plot_usage()
def plot_usage(self):
apps = ['Chrome', 'Slack', 'Visual Studio Code']
time_spent = [120, 90, 150]
ax = self.canvas.figure.add_subplot(111)
ax.pie(time_spent, labels=apps, autopct='%1.1f%%', startangle=90)
ax.set_title('应用使用时长统计')
self.canvas.draw()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
5. 通知与提醒
为了帮助用户更好地管理应用使用时长,我们可以在一定的时长后提供提醒功能。例如,当用户连续使用某个应用超过一定时间后,给出弹窗提醒。
from PyQt5.QtWidgets import QMessageBox
def show_usage_warning(app_name):
msg = QMessageBox()
msg.setIcon(QMessageBox.Warning)
msg.setText(f"你已经连续使用 {app_name} 超过 2 小时,请注意休息!")
msg.setWindowTitle("应用时长提醒")
msg.exec_()
6. 打包与发布
开发完成后,我们可以使用 PyInstaller 或 cx_Freeze 将应用打包成可执行文件,发布给用户:
pip install pyinstaller
pyinstaller --onefile app.py
总结
本文展示了如何利用 Python + Qt 打造一个智能应用时长统计工具,帮助用户了解自己在不同应用上的时间分布。通过定期记录应用使用时长、时长统计、数据可视化、通知提醒等功能,用户能够更好地管理自己的数字生活。借助开源工具,Python和Qt为我们提供了强大而灵活的开发能力,使得这种工具的实现变得更加轻松和高效。
发表回复