将截取 sys.stdout 的过程放到了 tab 中

取消了一些 createDB 的 print 提示
使用 __file__ 的绝对路径添加当前目录和 bin 目录到环境变量
This commit is contained in:
Haujet 2020-12-27 22:37:19 +08:00
parent c471e901ec
commit c711dfc66c
6 changed files with 37 additions and 42 deletions

4
.gitignore vendored
View File

@ -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

View File

@ -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>

View File

@ -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()

View File

@ -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:

View File

@ -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()

View File

@ -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