mirror of
https://github.com/HaujetZhao/CapsWriter.git
synced 2025-07-13 13:02:08 +08:00
将截取 sys.stdout 的过程放到了 tab 中
取消了一些 createDB 的 print 提示 使用 __file__ 的绝对路径添加当前目录和 bin 目录到环境变量
This commit is contained in:
parent
c471e901ec
commit
c711dfc66c
4
.gitignore
vendored
4
.gitignore
vendored
@ -5,10 +5,9 @@ __pycache__
|
|||||||
*.mp4
|
*.mp4
|
||||||
*.mkv
|
*.mkv
|
||||||
*.wav
|
*.wav
|
||||||
.DS_Store
|
|
||||||
.idea
|
.idea
|
||||||
|
.DS_Store
|
||||||
*info
|
*info
|
||||||
|
|
||||||
*database.db
|
*database.db
|
||||||
*test.py
|
*test.py
|
||||||
*.7z
|
*.7z
|
||||||
@ -18,3 +17,4 @@ __pycache__
|
|||||||
*.afphoto
|
*.afphoto
|
||||||
icon*.png
|
icon*.png
|
||||||
视频封面.png
|
视频封面.png
|
||||||
|
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module type="PYTHON_MODULE" version="4">
|
|
||||||
<component name="NewModuleRootManager">
|
|
||||||
<content url="file://$MODULE_DIR$" />
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
@ -1,11 +1,9 @@
|
|||||||
# -*- coding: UTF-8 -*-
|
# -*- coding: UTF-8 -*-
|
||||||
|
|
||||||
import os, sys, time
|
import os, sys, time
|
||||||
try:
|
|
||||||
os.chdir(os.path.dirname(__file__)) # 更改工作目录,指向正确的当前文件夹
|
os.chdir(os.path.dirname(os.path.abspath(__file__))) # 更改工作目录,指向正确的当前文件夹
|
||||||
sys.path.append(os.path.dirname(__file__)) # 将当前目录导入 python 寻找 package 和 moduel 的变量
|
sys.path.append(os.path.dirname(os.path.abspath(__file__))) # 将当前目录导入 python 寻找 package 和 moduel 的变量
|
||||||
except:
|
|
||||||
print('更改使用路径失败,不过没关系')
|
|
||||||
# os.environ['PATH'] += os.pathsep + os.path.abspath('./bin') # 将可执行文件的目录加入环境变量
|
# os.environ['PATH'] += os.pathsep + os.path.abspath('./bin') # 将可执行文件的目录加入环境变量
|
||||||
|
|
||||||
from PySide2.QtWidgets import *
|
from PySide2.QtWidgets import *
|
||||||
@ -23,11 +21,11 @@ from moduels.component.NormalValue import 常量
|
|||||||
|
|
||||||
def 高分屏变量设置(app):
|
def 高分屏变量设置(app):
|
||||||
os.environ['QT_SCALE_FACTOR'] = '1'
|
os.environ['QT_SCALE_FACTOR'] = '1'
|
||||||
app.setAttribute(Qt.AA_EnableHighDpiScaling)
|
|
||||||
QCoreApplication.instance().setAttribute(Qt.AA_UseHighDpiPixmaps)
|
QCoreApplication.instance().setAttribute(Qt.AA_UseHighDpiPixmaps)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
高分屏变量设置(app)
|
高分屏变量设置(app)
|
||||||
createDB()
|
createDB()
|
||||||
|
@ -19,8 +19,8 @@ def createDB():
|
|||||||
value text
|
value text
|
||||||
)''')
|
)''')
|
||||||
else:
|
else:
|
||||||
print('偏好设置表单已存在')
|
# print('偏好设置表单已存在')
|
||||||
#
|
pass
|
||||||
result = cursor.execute(f'select * from sqlite_master where name = "{语音引擎表单名}";')
|
result = cursor.execute(f'select * from sqlite_master where name = "{语音引擎表单名}";')
|
||||||
if result.fetchone() == None:
|
if result.fetchone() == None:
|
||||||
cursor.execute(f'''create table {语音引擎表单名} (
|
cursor.execute(f'''create table {语音引擎表单名} (
|
||||||
@ -33,7 +33,8 @@ def createDB():
|
|||||||
AccessKeySecret text
|
AccessKeySecret text
|
||||||
)''')
|
)''')
|
||||||
else:
|
else:
|
||||||
print('语音引擎表单名已存在')
|
# print('语音引擎表单名已存在')
|
||||||
|
pass
|
||||||
#
|
#
|
||||||
# result = cursor.execute(f'select * from sqlite_master where name = "{皮肤表单名}";')
|
# result = cursor.execute(f'select * from sqlite_master where name = "{皮肤表单名}";')
|
||||||
# if result.fetchone() == None:
|
# if result.fetchone() == None:
|
||||||
|
@ -4,7 +4,7 @@ from PySide2.QtWidgets import *
|
|||||||
from PySide2.QtGui import *
|
from PySide2.QtGui import *
|
||||||
|
|
||||||
from moduels.component.NormalValue import 常量
|
from moduels.component.NormalValue import 常量
|
||||||
from moduels.component.Stream import Stream
|
|
||||||
from moduels.gui.Tab_CapsWriter import Tab_CapsWriter
|
from moduels.gui.Tab_CapsWriter import Tab_CapsWriter
|
||||||
# from moduels.gui.Tab_Stdout import Tab_Stdout
|
# from moduels.gui.Tab_Stdout import Tab_Stdout
|
||||||
from moduels.gui.Tab_Config import Tab_Config
|
from moduels.gui.Tab_Config import Tab_Config
|
||||||
@ -34,10 +34,9 @@ class MainWindow(QMainWindow):
|
|||||||
# 定义多个不同功能的 tab
|
# 定义多个不同功能的 tab
|
||||||
self.设置标签页 = Tab_Config() # 设置页要在前排加载,以确保一些设置加载成功
|
self.设置标签页 = Tab_Config() # 设置页要在前排加载,以确保一些设置加载成功
|
||||||
self.CapsWriter标签页 = Tab_CapsWriter() # 主要功能的 tab
|
self.CapsWriter标签页 = Tab_CapsWriter() # 主要功能的 tab
|
||||||
# self.打印输出标签页 = Tab_Stdout()
|
|
||||||
self.帮助标签页 = Tab_Help()
|
self.帮助标签页 = Tab_Help()
|
||||||
|
|
||||||
self.标准输出流 = Stream()
|
#
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -54,33 +53,17 @@ class MainWindow(QMainWindow):
|
|||||||
# self.设置标签页.状态栏消息.connect(lambda 消息, 时间: self.状态栏.showMessage(消息, 时间))
|
# self.设置标签页.状态栏消息.connect(lambda 消息, 时间: self.状态栏.showMessage(消息, 时间))
|
||||||
self.帮助标签页.状态栏消息.connect(lambda 消息, 时间: self.状态栏.showMessage(消息, 时间))
|
self.帮助标签页.状态栏消息.connect(lambda 消息, 时间: self.状态栏.showMessage(消息, 时间))
|
||||||
|
|
||||||
self.标准输出流.newText.connect(self.CapsWriter标签页.更新控制台输出)
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def initValues(self):
|
def initValues(self):
|
||||||
# self.adjustSize()
|
# self.adjustSize()
|
||||||
# self.setGeometry(QStyle(Qt.LeftToRight, Qt.AlignCenter, self.size(), QApplication.desktop().availableGeometry()))
|
# self.setGeometry(QStyle(Qt.LeftToRight, Qt.AlignCenter, self.size(), QApplication.desktop().availableGeometry()))
|
||||||
常量.状态栏 = self.状态栏
|
常量.状态栏 = self.状态栏
|
||||||
sys.stdout = self.标准输出流
|
|
||||||
self.setWindowIcon(QIcon(常量.图标路径))
|
self.setWindowIcon(QIcon(常量.图标路径))
|
||||||
self.setWindowTitle('CapsWriter 语音输入工具')
|
self.setWindowTitle('CapsWriter 语音输入工具')
|
||||||
self.setWindowFlag(Qt.WindowStaysOnTopHint) # 始终在前台
|
self.setWindowFlag(Qt.WindowStaysOnTopHint) # 始终在前台
|
||||||
print("""\n软件介绍:
|
|
||||||
|
|
||||||
CapsWriter,顾名思义,就是按下大写锁定键来打字的工具。它的具体作用是:当你按下键盘上的大写锁定键后,软件开始语音识别,当你松开大写锁定键时,识别的结果就可以立马上屏。
|
|
||||||
|
|
||||||
目前软件内置了对阿里云一句话识别 API 的支持。如果你要使用,就需要先在阿里云上实名认证,申请语音识别 API,在设置页面添加一个语音识别引擎。
|
|
||||||
|
|
||||||
具体申请阿里云 API 的方法,可以参考我这个视频:https://www.bilibili.com/video/BV1qK4y1s7Fb/
|
|
||||||
|
|
||||||
添加上引擎后,在当前页面选择一个引擎,点击启用按钮,就可以进行语音识别了!嗯
|
|
||||||
|
|
||||||
启用后,在实际使用中,只要按下 CapsLock 键,软件就会立刻开始录音:
|
|
||||||
|
|
||||||
如果只是单击 CapsLock 后松开,录音数据会立刻被删除;
|
|
||||||
如果按下 CapsLock 键时长超过 0.3 秒,就会开始连网进行语音识别,松开 CapsLock 键时,语音识别结果会被立刻输入。
|
|
||||||
|
|
||||||
所以你只需要按下 CapsLock 键,无需等待,就可以开始说话,因为当你按下按下 CapsLock 键的时候,程序就开始录音了。说完后,松开,识别结果立马上屏。\r\n""")
|
|
||||||
|
|
||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
|
@ -3,11 +3,12 @@
|
|||||||
from PySide2.QtWidgets import *
|
from PySide2.QtWidgets import *
|
||||||
from PySide2.QtGui import *
|
from PySide2.QtGui import *
|
||||||
from PySide2.QtCore import *
|
from PySide2.QtCore import *
|
||||||
import os, re, subprocess, time
|
import sys, os, re, subprocess, time
|
||||||
|
|
||||||
import pyaudio
|
import pyaudio
|
||||||
|
|
||||||
# from moduels.component.QLEdit_FilePathQLineEdit import QLEdit_FilePathQLineEdit
|
# from moduels.component.QLEdit_FilePathQLineEdit import QLEdit_FilePathQLineEdit
|
||||||
|
from moduels.component.Stream import Stream
|
||||||
from moduels.component.NormalValue import 常量
|
from moduels.component.NormalValue import 常量
|
||||||
from moduels.component.QEditBox_StdoutBox import QEditBox_StdoutBox
|
from moduels.component.QEditBox_StdoutBox import QEditBox_StdoutBox
|
||||||
# from moduels.component.SpaceLine import QHLine, QVLine
|
# from moduels.component.SpaceLine import QHLine, QVLine
|
||||||
@ -53,7 +54,11 @@ class Tab_CapsWriter(QWidget):
|
|||||||
self.停止按钮 = QPushButton('停止 CapsWriter')
|
self.停止按钮 = QPushButton('停止 CapsWriter')
|
||||||
self.启停按钮Box布局 = QHBoxLayout()
|
self.启停按钮Box布局 = QHBoxLayout()
|
||||||
|
|
||||||
|
self.标准输出流 = Stream()
|
||||||
|
|
||||||
def initLayouts(self):
|
def initLayouts(self):
|
||||||
|
self.标准输出流.newText.connect(self.更新控制台输出)
|
||||||
|
|
||||||
self.引擎选择Box布局.addWidget(self.引擎选择下拉框)
|
self.引擎选择Box布局.addWidget(self.引擎选择下拉框)
|
||||||
|
|
||||||
self.控制台输出Box布局.addWidget(self.控制台输出框)
|
self.控制台输出Box布局.addWidget(self.控制台输出框)
|
||||||
@ -78,12 +83,28 @@ class Tab_CapsWriter(QWidget):
|
|||||||
def 更新控制台输出(self, 文本):
|
def 更新控制台输出(self, 文本):
|
||||||
self.控制台输出框.print(文本)
|
self.控制台输出框.print(文本)
|
||||||
|
|
||||||
|
|
||||||
def initValues(self):
|
def initValues(self):
|
||||||
self.引擎线程 = None
|
self.引擎线程 = None
|
||||||
# self.aliClient = ali_speech.NlsClient()
|
# self.aliClient = ali_speech.NlsClient()
|
||||||
# self.aliClient.set_log_level('WARNING') # 设置 client 输出日志信息的级别:DEBUG、INFO、WARNING、ERROR
|
# self.aliClient.set_log_level('WARNING') # 设置 client 输出日志信息的级别:DEBUG、INFO、WARNING、ERROR
|
||||||
self.停止按钮.setDisabled(True)
|
self.停止按钮.setDisabled(True)
|
||||||
|
sys.stdout = self.标准输出流
|
||||||
|
print("""\n软件介绍:
|
||||||
|
|
||||||
|
CapsWriter,顾名思义,就是按下大写锁定键来打字的工具。它的具体作用是:当你按下键盘上的大写锁定键后,软件开始语音识别,当你松开大写锁定键时,识别的结果就可以立马上屏。
|
||||||
|
|
||||||
|
目前软件内置了对阿里云一句话识别 API 的支持。如果你要使用,就需要先在阿里云上实名认证,申请语音识别 API,在设置页面添加一个语音识别引擎。
|
||||||
|
|
||||||
|
具体申请阿里云 API 的方法,可以参考我这个视频:https://www.bilibili.com/video/BV1qK4y1s7Fb/
|
||||||
|
|
||||||
|
添加上引擎后,在当前页面选择一个引擎,点击启用按钮,就可以进行语音识别了!嗯
|
||||||
|
|
||||||
|
启用后,在实际使用中,只要按下 CapsLock 键,软件就会立刻开始录音:
|
||||||
|
|
||||||
|
如果只是单击 CapsLock 后松开,录音数据会立刻被删除;
|
||||||
|
如果按下 CapsLock 键时长超过 0.3 秒,就会开始连网进行语音识别,松开 CapsLock 键时,语音识别结果会被立刻输入。
|
||||||
|
|
||||||
|
所以你只需要按下 CapsLock 键,无需等待,就可以开始说话,因为当你按下按下 CapsLock 键的时候,程序就开始录音了。说完后,松开,识别结果立马上屏。\r\n""")
|
||||||
|
|
||||||
def 启动引擎(self):
|
def 启动引擎(self):
|
||||||
if self.引擎线程 != None: return
|
if self.引擎线程 != None: return
|
||||||
|
Loading…
Reference in New Issue
Block a user