本想在ui界面内加入语音识别控制功能使用语音控制界面转换,发现在语音控制线程中无法直接对ui进行操作,包括点击事件以及弹出提示信息都不行
只能用继承pyqt子线程类重写run方法发送信号至ui界面回调函数里进行控制
- 写在ui界面类外
class Runthread(QtCore.QThread):
# python3,pyqt5与之前的版本有些不一样
# 通过类成员对象定义信号对象
_signal = pyqtSignal(str)#信号传输类型,我用的是字符串str型
def __init__(self):
super(Runthread, self).__init__()
def __del__(self):
self.wait()
def run(self):
#你的程序
self._signal.emit("1") # 信号发送
ui主界面创建按钮控件
def __init__(self):
self.btn_speech=QPushButton('语音功能', self)
ui事件绑定
def init_ui(self):
self.btn_speech.clicked.connect(self.timer_click)
ui界面内定义点击事件
def timer_click(self):
self.thread = Runthread() # 创建线程
self.thread._signal.connect(self.callbacklog) # 连接信号
self.thread.start() # 开始线程
回调函数
def callbacklog(self,msg):
if(msg=='1'):
print('ok')