From 06e563bb22843fe24abe816e438032fc8226e230 Mon Sep 17 00:00:00 2001
From: Horse861 <929110464@qq.com>
Date: Mon, 15 Sep 2025 11:38:06 +0800
Subject: [PATCH] demo
---
.idea/.gitignore | 8 ++
.idea/Curriculum_Design.iml | 10 ++
.../inspectionProfiles/profiles_settings.xml | 6 +
.idea/misc.xml | 7 +
.idea/modules.xml | 8 ++
.idea/vcs.xml | 6 +
src/demo.py | 124 ++++++++++++++++++
src/demo.txt | 47 +++++++
8 files changed, 216 insertions(+)
create mode 100644 .idea/.gitignore
create mode 100644 .idea/Curriculum_Design.iml
create mode 100644 .idea/inspectionProfiles/profiles_settings.xml
create mode 100644 .idea/misc.xml
create mode 100644 .idea/modules.xml
create mode 100644 .idea/vcs.xml
create mode 100644 src/demo.py
create mode 100644 src/demo.txt
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..35410ca
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/Curriculum_Design.iml b/.idea/Curriculum_Design.iml
new file mode 100644
index 0000000..11684ae
--- /dev/null
+++ b/.idea/Curriculum_Design.iml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..96507a7
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..657dff4
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/demo.py b/src/demo.py
new file mode 100644
index 0000000..5f181cb
--- /dev/null
+++ b/src/demo.py
@@ -0,0 +1,124 @@
+import sys
+import os
+from PyQt5.QtWidgets import (QApplication, QMainWindow, QTextEdit, QAction,
+ QFileDialog, QVBoxLayout, QWidget, QLabel, QStatusBar)
+from PyQt5.QtGui import QFont, QTextCursor
+from PyQt5.QtCore import Qt
+
+class WordDemo(QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.initUI()
+ self.file_content = ""
+ self.current_position = 0
+
+ def initUI(self):
+ # 设置窗口标题和大小
+ self.setWindowTitle('Word Demo - 打字显示TXT内容')
+ self.setGeometry(100, 100, 800, 600)
+
+ # 创建中央部件和布局
+ central_widget = QWidget()
+ self.setCentralWidget(central_widget)
+ layout = QVBoxLayout(central_widget)
+
+ # 创建状态栏
+ self.statusBar = QStatusBar()
+ self.setStatusBar(self.statusBar)
+ self.status_label = QLabel("就绪")
+ self.statusBar.addWidget(self.status_label)
+
+ # 创建文本编辑器
+ self.text_edit = QTextEdit()
+ self.text_edit.setFont(QFont("Arial", 12))
+ self.text_edit.textChanged.connect(self.on_text_changed)
+ layout.addWidget(self.text_edit)
+
+ # 创建菜单栏
+ menubar = self.menuBar()
+ file_menu = menubar.addMenu('文件')
+
+ # 添加打开文件动作
+ open_action = QAction('打开', self)
+ open_action.setShortcut('Ctrl+O')
+ open_action.triggered.connect(self.open_file)
+ file_menu.addAction(open_action)
+
+ # 添加退出动作
+ exit_action = QAction('退出', self)
+ exit_action.setShortcut('Ctrl+Q')
+ exit_action.triggered.connect(self.close)
+ file_menu.addAction(exit_action)
+
+ # 显示界面
+ self.show()
+
+ def open_file(self):
+ # 打开文件对话框
+ file_path, _ = QFileDialog.getOpenFileName(
+ self, "打开文本文件", "", "文本文件 (*.txt);;所有文件 (*)")
+
+ if file_path:
+ try:
+ # 读取文件内容
+ with open(file_path, 'r', encoding='utf-8') as file:
+ self.file_content = file.read()
+
+ # 重置状态
+ self.current_position = 0
+ self.text_edit.clear()
+
+ # 更新状态栏
+ file_name = os.path.basename(file_path)
+ self.status_label.setText(f"已加载文件: {file_name} - 共 {len(self.file_content)} 字符")
+
+ except Exception as e:
+ self.status_label.setText(f"错误: {str(e)}")
+
+ def on_text_changed(self):
+ # 获取当前文本长度
+ current_text = self.text_edit.toPlainText()
+ text_length = len(current_text)
+
+ # 如果文本长度增加
+ if text_length > self.current_position:
+ # 计算需要显示的新字符数
+ new_chars_count = text_length - self.current_position
+
+ # 确保不超过文件内容长度
+ if self.current_position + new_chars_count <= len(self.file_content):
+ # 获取当前光标位置
+ cursor = self.text_edit.textCursor()
+ cursor_pos = cursor.position()
+
+ # 替换用户输入的内容为文件内容
+ new_text = self.file_content[:text_length]
+ self.text_edit.blockSignals(True) # 暂时阻塞信号防止递归调用
+ self.text_edit.setPlainText(new_text)
+
+ # 恢复光标位置
+ cursor.setPosition(cursor_pos)
+ self.text_edit.setTextCursor(cursor)
+ self.text_edit.blockSignals(False) # 解除信号阻塞
+
+ # 更新当前位置
+ self.current_position = text_length
+
+ # 更新状态栏
+ self.status_label.setText(f"已输入: {text_length}/{len(self.file_content)} 字符")
+ else:
+ # 如果超出文件内容长度,阻止继续输入
+ self.text_edit.blockSignals(True)
+ self.text_edit.setPlainText(self.file_content)
+ self.text_edit.blockSignals(False)
+ self.status_label.setText("已到达文件末尾")
+
+ # 如果文本长度减少(用户删除内容)
+ elif text_length < self.current_position:
+ self.current_position = text_length
+ self.status_label.setText(f"已输入: {text_length}/{len(self.file_content)} 字符")
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ demo = WordDemo()
+ sys.exit(app.exec_())
diff --git a/src/demo.txt b/src/demo.txt
new file mode 100644
index 0000000..b93af67
--- /dev/null
+++ b/src/demo.txt
@@ -0,0 +1,47 @@
+## 《机械之心》第一章 陆冲的觉醒
+
+刺眼的阳光透过防弹玻璃照射进来,陆冲眯起眼睛,抬手挡在额前。他的手腕上还戴着特制的镣铐,这是专门为异能者设计的,能抑制他们的特殊能力。
+
+"编号A-017,请到3号检测室。"冰冷的机械女声在走廊里回荡。
+
+陆冲站起身,镣铐发出清脆的碰撞声。他能感觉到周围其他实验体投来的目光,有怜悯,有恐惧,还有幸灾乐祸。在这个地下实验室里,他们不过是一群待宰的羔羊。
+
+3号检测室的门在身后关上,陆冲被固定在检测台上。他闭上眼睛,感受着仪器在皮肤上游走。突然,一阵剧痛从太阳穴传来,他的意识开始模糊。
+
+"滴滴滴——"刺耳的警报声响起。
+
+"实验体A-017出现异常反应!"研究员的声音里带着惊恐。
+
+陆冲猛地睁开眼睛,瞳孔中闪过一丝银光。他的身体开始颤抖,镣铐发出不堪重负的呻吟。他能感觉到,某种沉睡已久的力量正在苏醒。
+
+"快!注射镇定剂!"
+
+针头刺入皮肤的瞬间,陆冲发出一声低吼。他感觉体内有什么东西在沸腾,在燃烧。记忆如潮水般涌来,他看到了漫天飞舞的机械鸟群,看到了钢铁铸就的摩天大楼,看到了自己站在高耸入云的塔顶,俯视着这座被机械统治的城市。
+
+"砰!"镣铐应声而断。
+
+研究员们惊恐地向后退去,陆冲缓缓站起身。他的皮肤下浮现出银色的纹路,那是机械与血肉完美融合的证明。他能听到整个实验室的机械运转声,能感受到每一台设备的脉动。
+
+"拦住他!"
+
+安保人员冲了进来,手中的电击枪闪烁着蓝光。陆冲抬起手,电击枪突然失控,电流反向流窜,安保人员抽搐着倒下。他轻轻一挥手,实验室的门锁自动开启。
+
+警报声在整个实验室回荡,红色的警示灯将走廊染成血色。陆冲大步向前,所过之处,所有的电子设备都陷入瘫痪。他能感觉到,自己就是这座钢铁牢笼的主宰。
+
+"砰!"一声枪响。
+
+子弹擦着陆冲的脸颊飞过,在他身后的墙上留下一个焦黑的弹孔。他转过身,看到一个穿着白大褂的中年男人举着手枪,手在微微发抖。
+
+"陆冲,你不能走。"男人的声音里带着颤抖,"你是我们最成功的实验体,你体内流淌着最完美的机械之血。"
+
+陆冲冷笑一声:"完美?你们把我改造成怪物,就为了这个?"
+
+"你不是怪物!"男人激动地说,"你是机械与人类完美融合的产物,你是新人类的希望!"
+
+"希望?"陆冲抬起手,男人手中的枪突然扭曲变形,"我的希望就是摧毁这个实验室,摧毁所有像你们这样的人。"
+
+男人还想说什么,但陆冲已经转身离去。他的身影在走廊尽头消失,只留下满地狼藉和此起彼伏的警报声。
+
+实验室外,陆冲站在高耸的围墙下。他仰起头,看着头顶的星空。这座城市依然灯火通明,机械鸟群在空中盘旋,钢铁巨兽在街道上穿梭。但这一切,都将因他的觉醒而改变。
+
+他闭上眼睛,感受着体内澎湃的力量。机械之心在胸腔中跳动,发出规律的嗡鸣。这不是终结,而是开始。属于陆冲的时代,才刚刚拉开序幕。
\ No newline at end of file