Skip to content

Commit 5efeb67

Browse files
committed
add p39 qtexttospeech
1 parent a18b2d3 commit 5efeb67

File tree

4 files changed

+248
-0
lines changed

4 files changed

+248
-0
lines changed

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# PyQt5基础教程(持续更新中。。。)
22

3+
* p39_QTextToSpeech [源码下载](p39_QTextToSpeech) [博文地址](https://xugaoxiang.com/2023/04/18/pyqt5-39-qtexttospeech/)
4+
35
* p38_多窗口 [源码下载](p38_多窗口) [博文地址](https://xugaoxiang.com/2023/02/02/pyqt5-38-multiwindow/)
46

57
* p37_大图片放大缩小 [源码下载](p37_大图片放大缩小) [博文地址](https://xugaoxiang.com/2022/12/06/pyqt5-37-image-zoom/)

p39_QTextToSpeech/main_window.py

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import sys
2+
3+
from PyQt5 import QtCore, QtGui, QtWidgets
4+
from PyQt5.QtTextToSpeech import QTextToSpeech
5+
from PyQt5.QtWidgets import QMainWindow, QApplication
6+
7+
from ui_mainwindow import Ui_MainWindow
8+
9+
10+
class MainWindow(QMainWindow, Ui_MainWindow):
11+
12+
def __init__(self, parent=None):
13+
super(MainWindow, self).__init__(parent)
14+
self.setupUi(self)
15+
16+
self.pushButton.clicked.connect(self.play)
17+
18+
self.engine = None
19+
engineNames = QTextToSpeech.availableEngines()
20+
print('engine names: {}'.format(engineNames))
21+
22+
if len(engineNames) > 0:
23+
engineName = engineNames[0]
24+
self.engine = QTextToSpeech(engineName)
25+
self.engine.stateChanged.connect(self.stateChanged)
26+
27+
self.voices = []
28+
29+
for voice in self.engine.availableVoices():
30+
print('voice: {}'.format(voice))
31+
self.voices.append(voice)
32+
self.comboBox.addItem(voice.name())
33+
34+
else:
35+
self.pushButton.setEnabled(False)
36+
37+
def play(self):
38+
self.pushButton.setEnabled(False)
39+
self.engine.setVoice(self.voices[self.comboBox.currentIndex()])
40+
# self.engine.setVolume(float(self.horizontalSlider.value() / 100))
41+
self.engine.say(self.lineEdit.text())
42+
43+
def stateChanged(self, state):
44+
if (state == QTextToSpeech.State.Ready):
45+
self.pushButton.setEnabled(True)
46+
47+
48+
if __name__ == '__main__':
49+
app = QApplication(sys.argv)
50+
windows = MainWindow()
51+
windows.show()
52+
sys.exit(app.exec_())

p39_QTextToSpeech/mainwindow.ui

+109
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>MainWindow</class>
4+
<widget class="QMainWindow" name="MainWindow">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>800</width>
10+
<height>600</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>QtTextToSpeech示例</string>
15+
</property>
16+
<widget class="QWidget" name="centralwidget">
17+
<widget class="QWidget" name="">
18+
<property name="geometry">
19+
<rect>
20+
<x>140</x>
21+
<y>140</y>
22+
<width>501</width>
23+
<height>151</height>
24+
</rect>
25+
</property>
26+
<layout class="QVBoxLayout" name="verticalLayout">
27+
<item>
28+
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,3">
29+
<property name="rightMargin">
30+
<number>0</number>
31+
</property>
32+
<item>
33+
<widget class="QLabel" name="label_voice">
34+
<property name="font">
35+
<font>
36+
<pointsize>20</pointsize>
37+
</font>
38+
</property>
39+
<property name="text">
40+
<string>选择声音</string>
41+
</property>
42+
</widget>
43+
</item>
44+
<item>
45+
<widget class="QComboBox" name="comboBox">
46+
<property name="font">
47+
<font>
48+
<pointsize>20</pointsize>
49+
</font>
50+
</property>
51+
</widget>
52+
</item>
53+
</layout>
54+
</item>
55+
<item>
56+
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="1,2,1">
57+
<item>
58+
<widget class="QLabel" name="label">
59+
<property name="font">
60+
<font>
61+
<pointsize>20</pointsize>
62+
</font>
63+
</property>
64+
<property name="text">
65+
<string>输入文本</string>
66+
</property>
67+
</widget>
68+
</item>
69+
<item>
70+
<widget class="QLineEdit" name="lineEdit">
71+
<property name="font">
72+
<font>
73+
<pointsize>20</pointsize>
74+
</font>
75+
</property>
76+
</widget>
77+
</item>
78+
<item>
79+
<widget class="QPushButton" name="pushButton">
80+
<property name="font">
81+
<font>
82+
<pointsize>20</pointsize>
83+
</font>
84+
</property>
85+
<property name="text">
86+
<string>播放语音</string>
87+
</property>
88+
</widget>
89+
</item>
90+
</layout>
91+
</item>
92+
</layout>
93+
</widget>
94+
</widget>
95+
<widget class="QMenuBar" name="menubar">
96+
<property name="geometry">
97+
<rect>
98+
<x>0</x>
99+
<y>0</y>
100+
<width>800</width>
101+
<height>23</height>
102+
</rect>
103+
</property>
104+
</widget>
105+
<widget class="QStatusBar" name="statusbar"/>
106+
</widget>
107+
<resources/>
108+
<connections/>
109+
</ui>

p39_QTextToSpeech/ui_mainwindow.py

+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# -*- coding: utf-8 -*-
2+
3+
# Form implementation generated from reading ui file '.\mainwindow.ui'
4+
#
5+
# Created by: PyQt5 UI code generator 5.15.9
6+
#
7+
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
8+
# run again. Do not edit this file unless you know what you are doing.
9+
10+
11+
from PyQt5 import QtCore, QtGui, QtWidgets
12+
13+
14+
class Ui_MainWindow(object):
15+
def setupUi(self, MainWindow):
16+
MainWindow.setObjectName("MainWindow")
17+
MainWindow.resize(800, 600)
18+
self.centralwidget = QtWidgets.QWidget(MainWindow)
19+
self.centralwidget.setObjectName("centralwidget")
20+
self.widget = QtWidgets.QWidget(self.centralwidget)
21+
self.widget.setGeometry(QtCore.QRect(140, 140, 501, 151))
22+
self.widget.setObjectName("widget")
23+
self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
24+
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
25+
self.verticalLayout.setObjectName("verticalLayout")
26+
self.horizontalLayout = QtWidgets.QHBoxLayout()
27+
self.horizontalLayout.setContentsMargins(-1, -1, 0, -1)
28+
self.horizontalLayout.setObjectName("horizontalLayout")
29+
self.label_voice = QtWidgets.QLabel(self.widget)
30+
font = QtGui.QFont()
31+
font.setPointSize(20)
32+
self.label_voice.setFont(font)
33+
self.label_voice.setObjectName("label_voice")
34+
self.horizontalLayout.addWidget(self.label_voice)
35+
self.comboBox = QtWidgets.QComboBox(self.widget)
36+
font = QtGui.QFont()
37+
font.setPointSize(20)
38+
self.comboBox.setFont(font)
39+
self.comboBox.setObjectName("comboBox")
40+
self.horizontalLayout.addWidget(self.comboBox)
41+
self.horizontalLayout.setStretch(0, 1)
42+
self.horizontalLayout.setStretch(1, 3)
43+
self.verticalLayout.addLayout(self.horizontalLayout)
44+
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
45+
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
46+
self.label = QtWidgets.QLabel(self.widget)
47+
font = QtGui.QFont()
48+
font.setPointSize(20)
49+
self.label.setFont(font)
50+
self.label.setObjectName("label")
51+
self.horizontalLayout_2.addWidget(self.label)
52+
self.lineEdit = QtWidgets.QLineEdit(self.widget)
53+
font = QtGui.QFont()
54+
font.setPointSize(20)
55+
self.lineEdit.setFont(font)
56+
self.lineEdit.setObjectName("lineEdit")
57+
self.horizontalLayout_2.addWidget(self.lineEdit)
58+
self.pushButton = QtWidgets.QPushButton(self.widget)
59+
font = QtGui.QFont()
60+
font.setPointSize(20)
61+
self.pushButton.setFont(font)
62+
self.pushButton.setObjectName("pushButton")
63+
self.horizontalLayout_2.addWidget(self.pushButton)
64+
self.horizontalLayout_2.setStretch(0, 1)
65+
self.horizontalLayout_2.setStretch(1, 2)
66+
self.horizontalLayout_2.setStretch(2, 1)
67+
self.verticalLayout.addLayout(self.horizontalLayout_2)
68+
MainWindow.setCentralWidget(self.centralwidget)
69+
self.menubar = QtWidgets.QMenuBar(MainWindow)
70+
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
71+
self.menubar.setObjectName("menubar")
72+
MainWindow.setMenuBar(self.menubar)
73+
self.statusbar = QtWidgets.QStatusBar(MainWindow)
74+
self.statusbar.setObjectName("statusbar")
75+
MainWindow.setStatusBar(self.statusbar)
76+
77+
self.retranslateUi(MainWindow)
78+
QtCore.QMetaObject.connectSlotsByName(MainWindow)
79+
80+
def retranslateUi(self, MainWindow):
81+
_translate = QtCore.QCoreApplication.translate
82+
MainWindow.setWindowTitle(_translate("MainWindow", "QtTextToSpeech示例"))
83+
self.label_voice.setText(_translate("MainWindow", "选择声音"))
84+
self.label.setText(_translate("MainWindow", "输入文本"))
85+
self.pushButton.setText(_translate("MainWindow", "播放语音"))

0 commit comments

Comments
 (0)