最近对Python的Twilio模块很感兴趣就看了亿会教程就懂了( ̄∀ ̄)
Twilio是一个提供云通信服务的平台,它允许开发者通过简单的API集成语音、视频通话、短信、MMS和IP消息到他们的应用程序中。Python Twilio模块是官方提供的一个库,它允许Python开发者轻松地使用Twilio的API来发送和接收短信、进行电话呼叫等。
最简单的用法就是
from twilio.rest import Client
# 你的Twilio账户SID和Auth Token
account_sid = 'your_account_sid'
auth_token = 'your_auth_token'
# 创建Twilio客户端
client = Client(account_sid, auth_token)
# 发送短信
message = client.calls.create(
to="he's number",
from_="your's number",
)
print(message.sid)
但是我觉得这还不够,于是我玩了一会Qt Designer,就搞出一个电话机界面,然后把打电话的逻辑和界面融在一起得到了以下代码
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QInputDialog, QMessageBox
from PyQt5 import QtCore, QtGui, QtWidgets
from twilio.rest import Client
class PhoneUi(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(351, 308)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.number = QtWidgets.QLabel(self.centralwidget)
self.number.setGeometry(QtCore.QRect(10, 10, 171, 51))
font = QtGui.QFont()
font.setPointSize(21)
self.number.setFont(font)
self.number.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
self.number.setObjectName("number")
self.one = QtWidgets.QPushButton(self.centralwidget)
self.one.setGeometry(QtCore.QRect(10, 70, 50, 50))
font = QtGui.QFont()
font.setPointSize(39)
self.one.setFont(font)
self.one.setObjectName("one")
self.two = QtWidgets.QPushButton(self.centralwidget)
self.two.setGeometry(QtCore.QRect(70, 70, 50, 50))
font = QtGui.QFont()
font.setPointSize(39)
self.two.setFont(font)
self.two.setObjectName("two")
self.three = QtWidgets.QPushButton(self.centralwidget)
self.three.setGeometry(QtCore.QRect(130, 70, 50, 50))
font = QtGui.QFont()
font.setPointSize(39)
self.three.setFont(font)
self.three.setObjectName("three")
self.four = QtWidgets.QPushButton(self.centralwidget)
self.four.setGeometry(QtCore.QRect(10, 130, 50, 50))
font = QtGui.QFont()
font.setPointSize(39)
self.four.setFont(font)
self.four.setObjectName("four")
self.five = QtWidgets.QPushButton(self.centralwidget)
self.five.setGeometry(QtCore.QRect(70, 130, 50, 50))
font = QtGui.QFont()
font.setPointSize(39)
self.five.setFont(font)
self.five.setObjectName("five")
self.six = QtWidgets.QPushButton(self.centralwidget)
self.six.setGeometry(QtCore.QRect(130, 130, 50, 50))
font = QtGui.QFont()
font.setPointSize(39)
self.six.setFont(font)
self.six.setObjectName("six")
self.seven = QtWidgets.QPushButton(self.centralwidget)
self.seven.setGeometry(QtCore.QRect(10, 190, 50, 50))
font = QtGui.QFont()
font.setPointSize(39)
self.seven.setFont(font)
self.seven.setObjectName("seven")
self.eight = QtWidgets.QPushButton(self.centralwidget)
self.eight.setGeometry(QtCore.QRect(70, 190, 50, 50))
font = QtGui.QFont()
font.setPointSize(39)
self.eight.setFont(font)
self.eight.setObjectName("eight")
self.nine = QtWidgets.QPushButton(self.centralwidget)
self.nine.setGeometry(QtCore.QRect(130, 190, 50, 50))
font = QtGui.QFont()
font.setPointSize(39)
self.nine.setFont(font)
self.nine.setObjectName("nine")
self.zero = QtWidgets.QPushButton(self.centralwidget)
self.zero.setGeometry(QtCore.QRect(70, 250, 50, 50))
font = QtGui.QFont()
font.setPointSize(39)
self.zero.setFont(font)
self.zero.setObjectName("zero")
self.call = QtWidgets.QPushButton(self.centralwidget)
self.call.setGeometry(QtCore.QRect(10, 250, 50, 50))
font = QtGui.QFont()
font.setPointSize(23)
self.call.setFont(font)
self.call.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
self.call.setObjectName("call")
self.backspace = QtWidgets.QPushButton(self.centralwidget)
self.backspace.setGeometry(QtCore.QRect(130, 250, 50, 50))
font = QtGui.QFont()
font.setPointSize(23)
self.backspace.setFont(font)
self.backspace.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
self.backspace.setObjectName("backspace")
self.history = QtWidgets.QListWidget(self.centralwidget)
self.history.setGeometry(QtCore.QRect(190, 70, 151, 231))
self.history.setObjectName("history")
self.country = QtWidgets.QComboBox(self.centralwidget)
self.country.setGeometry(QtCore.QRect(190, 30, 151, 22))
self.country.setEditable(True)
self.country.setObjectName("country")
MainWindow.setCentralWidget(self.centralwidget)self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "twilio网络电话"))
self.number.setText(_translate("MainWindow", "电话号码"))
self.one.setText(_translate("MainWindow", "1"))
self.two.setText(_translate("MainWindow", "2"))
self.three.setText(_translate("MainWindow", "3"))
self.four.setText(_translate("MainWindow", "4"))
self.five.setText(_translate("MainWindow", "5"))
self.six.setText(_translate("MainWindow", "6"))
self.seven.setText(_translate("MainWindow", "7"))
self.eight.setText(_translate("MainWindow", "8"))
self.nine.setText(_translate("MainWindow", "9"))
self.zero.setText(_translate("MainWindow", "0"))
self.call.setText(_translate("MainWindow", "CALL"))
self.backspace.setText(_translate("MainWindow", "BACK"))
self.country.addItems(
['美国 +1', '马来西亚 +60', '印度尼西亚 +62', '菲律宾 +63', '新加坡 +65', '泰国 +66', '文莱 +673',
'日本 +81', '韩国 +82', '越南 +84', '朝鲜 +850', '中国香港 +852', '中国澳门 +853', '柬埔寨 +855',
'老挝 +856', '中国 +86', '中国台湾 +886'])
class MainWindow(QMainWindow, PhoneUi):
def __init__(self):
super(MainWindow, self).__init__()
self.setupUi(self)
self.num = ''
self.into()
self.button_click()def button_click(self):
self.one.clicked.connect(lambda: self.add_num('1'))
self.two.clicked.connect(lambda: self.add_num('2'))
self.three.clicked.connect(lambda: self.add_num('3'))
self.four.clicked.connect(lambda: self.add_num('4'))
self.five.clicked.connect(lambda: self.add_num('5'))
self.six.clicked.connect(lambda: self.add_num('6'))
self.seven.clicked.connect(lambda: self.add_num('7'))
self.eight.clicked.connect(lambda: self.add_num('8'))
self.nine.clicked.connect(lambda: self.add_num('9'))
self.zero.clicked.connect(lambda: self.add_num('0'))self.backspace.clicked.connect(self.delete)
self.call.clicked.connect(self.play_call)def add_num(self, num):
self.engine.say(num)
self.num += num
self.number.setText(self.num)def delete(self):
self.num = self.num[:-1]
self.number.setText(self.num)
print(self.num)if self.num == '':
self.number.setText("电话号码")def play_call(self):
country = self.country.currentText().split()[1]
try:
self.client.calls.create(
from_=self.user,
to=country + self.num,
url="http://demo.twilio.com/docs/voice.xml"
)
self.history.addItem(country + self.num + ":ok")
except:
self.history.addItem(country + self.num + f":bad")def into(self):
account, ok = QInputDialog.getText(self, "请输入account", "请输入account:", QtWidgets.QLineEdit.Normal, "")
if ok:
token_, ok = QInputDialog.getText(self, "请输入token", "token:", QtWidgets.QLineEdit.Normal, "")
if ok:
self.user, ok = QInputDialog.getText(self, "请输入你的电话号码", "请输入你的twilio号码\n前面带上'+'房租可能拨打失败:",
QtWidgets.QLineEdit.Normal, "")
if ok:
try:
self.client = Client(account, token_)
except:
QMessageBox.critical(self, 'Error','创建推特客户端时出现异常',
QMessageBox.Close)raise SystemExit
else:
self.into()
else:
self.into()
else:
self.into()
if __name__ == '__main__':
app = QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
有没有大佬帮忙试一下程序
ヘ⌒ヽフ
( ・ω・) 谢谢~~
/ ~つと)
散会